我想读取一个.csv
文件,并将数据存储在数据表中,但是由于某种原因,该代码正在引发错误:
System.NullReferenceException:'对象引用未设置为对象的实例。'
line
为空。
我已经调试并搜索错误是什么,在读取最后一行后说CSV的第194行,其中包含值,并且在读取该行之后,他将读取“ another”行195,该行为空,因为行在我的CSV文件中不存在,并且读取的内容不知道为什么。我已经尝试打开记事本并删除我得到的多余行并保存,并不断给我同样的错误-有帮助吗?
这是我的代码:
using (StreamReader sr = new streamReader(@"PATH"))
{
var datatable = new DataTable();
datatable.Columns.Add("PowerPlantId", typeof(string));
datatable.Columns.Add("AssetId", typeof(int));
string line;
line = sr.ReadLine();
if (line != null)
{
do
{
line = sr.ReadLine();
System.Diagnostics.Debug.WriteLine(line + "\n");
string[] lineitems = line.Split(",");
DataRow dr = datatable.NewRow();
dr["PowerPlantId"] = lineitems[0];
dr["AssetId"] = lineitems[1];
datatable.Rows.Add(dr);
} while (line != null);
}
答案 0 :(得分:3)
让我们看看您的do-while
循环中发生的步骤:
ReadLine()
应该怎么做:
ReadLine()
由于事件顺序错误,您得到NRE
。
您可以改为将循环更改为while
:
while((line = sr.ReadLine()) != null)
{
// process line, do NOT call ReadLine!
}