gpt4 book ai didi

c# - 将 .csv 文件解析为二维数组

转载 作者:可可西里 更新时间:2023-11-01 08:17:00 25 4
gpt4 key购买 nike

我正在尝试将 CSV 文件解析为 C# 中的二维数组。我有一个非常奇怪的问题,这是我的代码:

string filePath = @"C:\Users\Matt\Desktop\Eve Spread Sheet\Auto-Manufacture.csv";
StreamReader sr = new StreamReader(filePath);
data = null;
int Row = 0;
while (!sr.EndOfStream)
{
string[] Line = sr.ReadLine().Split(',');
if (Row == 0)
{
data = new string[Line.Length, Line.Length];
}
for (int column = 0; column < Line.Length; column++)
{
data[Row, column] = Line[column];
}
Row++;
Console.WriteLine(Row);
}

我的 .csv 文件有 87 行,但在执行过程中出现了一个奇怪的问题,它会完全按照预期将前 15 行读入数据数组,但当它读到 data[Row, column ] = Line[column]; 第 16 行似乎只是跳出了整个循环(不满足 sr.EndOfStream 条件)并且没有将更多数据读入数据数组。

谁能解释可能发生的事情?

最佳答案

上面代码的一个简短版本:

var filePath = @"C:\Users\Matt\Desktop\Eve Spread Sheet\Auto-Manufacture.csv";
var data = File.ReadLines(filePath).Select(x => x.Split(',')).ToArray();

请注意 ReadLines 而非 ReadAllLines 的用户,根据 MSDN documentation,后者在较大文件上效率更高:

When you use ReadLines, you can start enumerating the collection of strings before the whole collection is returned; when you use ReadAllLines, you must wait for the whole array of strings be returned before you can access the array. Therefore, when you are working with very large files, ReadLines can be more efficient.

关于c# - 将 .csv 文件解析为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18806757/

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