gpt4 book ai didi

c# - StreamReader.EndOfStream 缺少最后一行?

转载 作者:行者123 更新时间:2023-11-30 18:56:01 28 4
gpt4 key购买 nike

我正在尝试使用代码(粘贴在下面)读取文本文件,但文件的最后一行没有被读取。我的逻辑正确吗?

        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();
}
}

最佳答案

问题是:因为你有这个:

line = reader.ReadLine();

作为 while 循环的最后一行,它将读取最后一行然后丢弃它,因为 while 条件将返回 false。

我想你需要这个:

try
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
string[] 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);
}
return _DataTable;
}
finally
{
...

因此,每次循环时,您只需阅读每一行作为您做的第一件事。

关于c# - StreamReader.EndOfStream 缺少最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1307801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com