Estoy leyendo un archivo en línea por línea y quiero poder reiniciar la lectura llamando a un método Rewind()
.Volver StreamReader a Inicio
¿Cómo puedo manipular mi System.IO.StreamReader
y/o su System.IO.FileStream
subyacente para comenzar de nuevo con la lectura del archivo?
He tenido la ingeniosa idea de usar FileStream.Seek(long, SeekOffset)
para mover el archivo, pero no tiene ningún efecto el System.IO.StreamReader
adjunto. Pude Close()
y reasignar tanto la transmisión como el lector, pero espero que haya una mejor manera.
tener cuidado al hacer esto en cualquier archivo que no son simples archivos de texto ANSI (o más bien los archivos que tengan una codificación Preámbulo). Ver mi respuesta a continuación para más detalles. – Eamon
Olvidaste el uso de la cláusula/patrón de IDisposable. Nuevo en .NET 4.0 es StreamReader (stream, Encoding.UTF8, true, 1024, true) y el nuevo StreamWriter (stream, Encoding.UTF8, 1024, true) supera el patrón de IDisposable roto (al cerrar StreamReader/Writer se cierra la transmisión subyacente ... incluso M $ no siempre lo hace bien, al menos al principio). Si necesita leer de una secuencia más de una vez, tenga dos o más StreamReaders, cada uno en sus propias cláusulas de uso (no anidados dentro de la otra). Del mismo modo con StreamWriter. Debería ser muy raro que llame a DiscardBufferedData, según la documentación. – TamusJRoyce