我是新來的編碼和我已經費盡了我的大腦在這一點,但真的無法解釋這種對自己說:爲什麼這個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