2
我正在嘗試使用代碼(下面粘貼)讀取文本文件,但文件的最後一行沒有被讀取。我的邏輯正確嗎?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循環,併爲reader.Peek()!= -1 – Breakthrough 2009-08-20 18:03:00
進行while條件檢查我同意突破,只需使用腳控循環,事情就可以正常工作。可悲的是,今天大多數程序員並不在乎什麼時候使用什麼樣的循環。 – 2009-08-20 19:15:37
@Breakthrough,@BeowulfOF:當給定一個空文件時,你的do-while循環如何工作? – RichieHindle 2009-08-20 20:54:27