La forma más fácil de leer el archivo de texto que está bloqueado por otra aplicación


He estado usando File.ReadAllText para tomar algo de csv, pero cada vez que me olvido de cerrar el archivo en Excel, la aplicación lanza una excepción porque no puede obtener acceso al archivo.

(Me parece una locura, quiero decir que la lectura en ReadAllText parece bastante clara)

Sé que hay Archivo.Abierto con todas las campanas y silbidos, pero hay un método 'intermedio' que no implica jugar con buffers y matrices de char?

Sí, soy perezoso, así que vota por mí, sólo dame la respuesta primero.:)

Author: Benjol, 2009-09-07

2 answers

Creo que solo quieres lo siguiente:

using (var fileStream = new FileStream("foo.bar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var textReader = new StreamReader(fileStream))
{
    var content = textReader.ReadToEnd();
}

El parámetro FileAccess.Read es lo importante, para indicar que solo desea leer el archivo. Por supuesto, incluso para hacer esto, el archivo debe haber sido abierto por Excel en el modo read-share (consulte la enumeración FileShare en. NET). No he probado, por lo que no puedo garantizar que Excel haga esto, aunque esperaría que lo haga.

 49
Author: Noldorin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-06 19:42:52

Si desea especificar indicadores de uso compartido de archivos para abrir un archivo que está en uso, está atascado con Archivo.Abrir().

 0
Author: Philippe Leybaert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-07 12:24:33