Я пытаюсь прочитать текстовый файл, используя код (вставляемый ниже), но последняя строка файла не читается. Правильно ли моя логика?StreamReader.EndOfStream отсутствует последняя строка?
using (StreamReader reader = new StreamReader(stream))
{
try
{
string line = reader.ReadLine();
string[] data = BreakLine(line);
while (!reader.EndOfStream)
{
data = BreakLine(line);
DataRow dr = _DataTable.NewRow();
// protect against overflow
int maxColumns = Math.Min(_DataTable.Columns.Count, data.Length);
for (int i = 0; i < maxColumns; i++)
{
dr[i] = data[i];
}
_DataTable.Rows.Add(dr);
line = reader.ReadLine();
}
return _DataTable;
}
finally
{
reader.Close();
reader.Dispose();
stream.Close();
}
}
Еще один вариант - использовать цикл do-while и сделать проверку состояния для читателя. Peek()! = -1 – Breakthrough
Я согласен с прорывом, просто используйте педаль, контролируемую педалью, и все отлично работает , К сожалению, большинство программистов сегодня не заботятся о том, когда использовать какой цикл. –
@Breakthrough, @BeowulfOF: Как бы работал цикл while-while при получении пустого файла? – RichieHindle