Ich bin neu in Codierung und ich habe mein Gehirn über die schon Abstich aber wirklich kann dies mir nicht erklären:Warum wird diese While-Schleife die erste Iteration auslassen?
ich eine CSV-Datei mit einem Inhalt wie diese:
line1_value1, line1_value2, line1_value3
line2_value1, line2_value2, line2_value3
line3 value1, line3_value2, line3_value3
Für Testzwecken habe ich versucht, die Werte mit dem folgenden Code zum ausdrucken:
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();
}
}
Aber es lässt die erste Zeile und Drucke:
line2_value1
line2_value2
line2_value3
line3 value1
line3_value2
line3_value3
Wenn ich es in einer Do While-Schleife zu tun, es funktioniert wie gedacht:
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();
}
Diese Drucke:
line1_value1
line1_value2
line1_value3
line2_value1
line2_value2
line2_value3
line3 value1
line3_value2
line3_value3
Warum wird die erste Zeile zeigt, die nicht in der while-Schleife nach oben?
Vielen Dank im Voraus!
Beide Snippets lesen die gesamte Datei mehrmals ohne Grund. Verwenden Sie 'ReadToEnd()' einmal oder besser 'ReadAllLines()'. Sie lesen gerade die gleiche Datei immer wieder –
Ich möchte es Zeile-weise gelesen werden und Komma-getrennt. Also muss ich es in zwei Schleifen machen, oder? – pumuckl
Es funktioniert damit: string [] substrings = line.Split (','); – pumuckl