我是新来的编码和我已经费尽了我的大脑在这一点,但真的无法解释这种对自己说:为什么这个while循环省略了第一次迭代?
我有这样的内容的CSV文件:
line1_value1, line1_value2, line1_value3
line2_value1, line2_value2, line2_value3
line3 value1, line3_value2, line3_value3
对于测试目的,我试着用下面的代码打印出来的值:
static void Main(string[] args)
{
Program test = new Program();
test.printFile();
}
System.IO.StreamReader file = new System.IO.StreamReader(@"C:\some_file.csv");
public void printFile()
{
string line;
while ((line = file.ReadLine()) != null)
{
string[] substrings = file.ReadToEnd().Split(',');
foreach (var substring in substrings) {
Console.WriteLine(substring);
}
Console.ReadLine();
}
}
但它忽略了第一行,并打印:
line2_value1
line2_value2
line2_value3
line3 value1
line3_value2
line3_value3
如果我在while循环做呢,这是工作像预期:
public void printFile()
{
string line;
do
{
string[] substrings = file.ReadToEnd().Split(',');
foreach (var substring in substrings)
{
Console.WriteLine(substring);
}
}
while ((line = file.ReadLine()) != null);
Console.ReadLine();
}
此打印:
line1_value1
line1_value2
line1_value3
line2_value1
line2_value2
line2_value3
line3 value1
line3_value2
line3_value3
为什么第一行没有显示在while循环了?
提前致谢!
这两个代码段无需任何理由多次读取整个文件。只需使用ReadToEnd()一次或更好,ReadAllLines()。你只是一遍又一遍地读取相同的文件 –
我希望它被逐行读取和逗号分隔。所以我必须做两个循环,不是吗? – pumuckl
它适用于:string [] substrings = line.Split(','); – pumuckl