¿Puedo simplemente ‘leer’ un archivo que está en uso?

Intento usar un StreamReader para leer un archivo, pero siempre lo uso en otro proceso, así que me sale este error:

El proceso no puede acceder al archivo ‘\ arfjwknasgmed17 \ C $ \ FLAG CONDITION \ CP-ARFJN-FLAG.XLS’ porque lo está utilizando otro proceso.

¿Hay alguna manera de que pueda leer esto sin copiarlo? ¿O es esa mi única opción?

Puede leer el archivo solo si el progtwig que abrió el archivo primero especificó los derechos de lectura compartida en ese archivo.

Sin embargo, si el archivo no tiene derechos de lectura compartida, no podrá copiarlo en primer lugar.

Es posible que no pueda acceder a un archivo si está especificando un derecho de uso compartido que entra en conflicto con el derecho de uso compartido de un progtwig que ya tiene el archivo abierto. Por ejemplo, no puede otorgar acceso de escritura si el progtwig que ya lo tiene abierto no otorga acceso de escritura.

Si el progtwig que abrió el archivo en primer lugar es compatible con Volume Shadow Copy (VSS), también puede usar VSS para obtener acceso al archivo.

Hay controladores de software comercial que le permiten acceder a dichos archivos, incluso cuando están en uso. Solía ​​ser capaz de obtener Open File Manager de St-Bernards, y también puede usar File Access Manager (FAM) de VisionWorks Solutions Inc. Estos controladores suelen ser OEM para hacer copias de seguridad de compañías de software para incluirlas en sus productos.

VSS funciona diciendo al progtwig que ya tiene el archivo abierto que otro progtwig quisiera leer del archivo. VSS luego hace una copia del archivo y le permite leer de esta copia. VSS no funciona para aplicaciones heredadas.

FAM funciona de forma transparente para progtwigs heredados y no heredados al especificar una “lista permitida” de aplicaciones que pueden acceder exclusivamente a archivos abiertos y bloqueados. Solo los progtwigs en esta lista tienen acceso a estos archivos. Cuando se abre un archivo, entra en el modo de caché para que obtenga una copia del archivo tal como estaba cuando se inició la ‘copia de seguridad / apertura’ del archivo. En este punto, el progtwig que abrió originalmente el archivo ve el archivo como realmente es, y el segundo progtwig en la lista permitida, ve el archivo tal como estaba cuando ocurrió la ‘apertura / copia de seguridad’ del archivo. Esto asegura la consistencia del archivo.

prueba el siguiente código

FileStream fileStr = File.Open(, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); fileStream = new StreamReader(fileStr); 

Lo he probado en Windows XP. Si el archivo ya está abierto en modo de escritura por algún otro proceso y no ha especificado los derechos de uso compartido, aún podrá abrir el archivo en modo de lectura.

Descargo de responsabilidad: Funciona, pero luego, no estoy seguro de si debe usarlo en el código de producción. Todavía no puedo encontrar ninguna documentación formal que diga que debería funcionar.