Pregunta

Posibles Duplicados:
C# Lectura de un Archivo línea Por Línea
Cómo bucle a través de líneas de TextReader?

Me dan una .NET TextReader (una clase que puede leer una serie secuencial de caracteres).¿Cómo puedo lazo sobre su contenido por la línea?

¿Fue útil?

Solución

¿Quieres decir algo como esto?

string line = null;
while((line = reader.ReadLine()) != null) 
{
    // do something with line
}

Otros consejos

Usted puede crear un método de extensión muy fácilmente, así que usted puede utilizar foreach:

public static IEnumerable<string> ReadLines(this TextReader reader)
{
    string line = null;
    while((line = reader.ReadLine()) != null) 
    {
        yield return line;
    }
}

Tenga en cuenta que este no cerrar el lector para usted en el final.

Usted puede utilizar a continuación:

foreach (string line in reader.ReadLines())

EDITAR:Como se señaló en los comentarios, este es perezoso.Sólo leer una línea a la vez, en lugar de leer todas las líneas en la memoria.

La solución no perezosa que tengo en este momento:

foreach(string line in source.ReadToEnd().Split(Environment.NewLine.ToArray(),StringSplitOptions.None))

lo usarías así:

string line;
while ((line = myTextReader.ReadLine()) != null)
{
    //do whatever with "line";
}

o

string Myfile = @"C:\MyDocument.txt";
using(FileStream fs = new FileStream(Myfile, FileMode.Open, FileAccess.Read))
{                    
    using(StreamReader sr = new StreamReader(fs))
    {
        while(!sr.EndOfStream)
        {
            Console.WriteLine(sr.ReadLine());
        }
    }
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top