Pergunta

Possível duplicata:
C# lendo um arquivo linha por linha
Como fazer um loop nas linhas de um TextReader?

Recebi um .NET Leitor de texto (uma classe que pode ler uma série sequencial de caracteres).Como posso percorrer seu conteúdo por linha?

Foi útil?

Solução

Você quer dizer algo assim?

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

Outras dicas

Você pode criar um método de extensão muito facilmente para poder usar foreach:

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

Observe que isso não vai feche o leitor para você no final.

Você pode então usar:

foreach (string line in reader.ReadLines())

EDITAR:Conforme observado nos comentários, isso é preguiçoso.Ele lerá apenas uma linha por vez, em vez de ler todas as linhas na memória.

A solução não preguiçosa que tenho no momento:

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

Você usaria assim:

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

OU

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top