2016-06-08 4 views
1

У меня есть System.IO.Stream, что я получаю контент из (файла). Я делаю следующее:Как читать каждую строку файла в цикле?

using (var reader = new StreamReader(mystream)) 
{ 
    var filecontent = reader.ReadLine(); 
} 

Это только фиксирует одну строку. Я бы хотел поставить каждую строку в List<String>. Как это можно сделать?

+5

Почему бы не использовать [ ' File.ReadAllLines'] (https://msdn.microsoft.com/en-us/library/system.io.file.readalllines (v = vs.110) .aspx)? (так как вы говорите, что получаете контент из файла) –

+0

Откуда у вас файл? У меня только Stream. – 4thSpace

+0

ReadAllLines подходит для небольших файлов, но загружает все в память. Это хорошая идея в этом конкретном случае, когда OP хочет «Список », но будущим читателям известно, что это не всегда лучший способ «прочитать каждую строку файла в цикле». –

ответ

1

внутри using добавить

while (reader.Peek() >= 0){ 
    list.add(reader.readline); 
} 
1

Если у вас есть файл:

List<string> allLines = File.ReadAllLines(fileName).ToList(); 

В случае у вас есть пара вместо файла:

List<string> allLines = new List<string>(); 
    using (StreamReader reader = new StreamReader(stream)) 
    { 
     string line; 
     while ((line = reader.ReadLine()) != null) 
     { 
     allLines.Add(line); // Add to list.  
     } 
    } 
Смежные вопросы