Hallo ihr alle Genies!Seltsames Ergebnis mit readline/writeline
Ich habe versucht, einen Code zu erstellen, der eine TXT-Datei liest und jede Zeile beginnend mit dem Wort "PART" in dieser Datei nimmt und in eine neue Datei legt.
Irgendwie fehlt die Ausgabedatei jede zweite Zeile aus der ursprünglichen Datei. Dies ist mein Code:
{
string line ="";
string Starttext = "PART";
using (System.IO.StreamReader reader = new System.IO.StreamReader(@"C:\Users\tsnm2171\Desktop\processed\LABB\ORIGINAL.txt"))
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(@"C:\Users\tsnm2171\Desktop\processed\LABB\OUTPUT.txt"))
while (reader.ReadLine() != null)
{ line = reader.ReadLine();
if (line.StartsWith(Starttext))
{
//writes/starts a new line beginning with PART
writer.WriteLine(line);
}
else
{
//appends info to same line (beginning with a space)
writer.Write(" " + line);
}
}
}
Die Originaldatei sieht wie folgt aus:
KABEL RXF 4x25
PART 01 1 1
PART 02 2 2
PART 03 3 3
PART 04 4 4
PART SH GND GND
KABEL RXF 4x35 0000000456 Cable RXF 4x35
PART 01 1 5 5
PART 02 1 6 6
PART 03 1 7 7
PART 04 1 8 8
PART SH 1 GND GND
KABEL RXF 4x35 0000000456 Cable RXF 4x35
PART 01 1 9 9
PART 02 1 10 10
PART 03 1 11 11
PART 04 1 12 12
PART SH 1 GND GND
Aber die Ausgabedatei wird die Linien "Part 02" und "Part 04", wie unten fehlt:
PART 01 1 1
PART 03 3 3
PART SH GND GND
PART 01 1 5 5
PART 03 1 7 7
PART SH 1 GND GND
PART 01 1 9 9
PART 03 1 11 11
PART SH 1 GND GND
Warum?
Du nennst 'ReadLine' zweimal für jeden' WriteLine' Anruf. Sie wollen fast sicher 'while ((line = reader.ReadLine())! = Null)' und den folgenden Aufruf entfernen. –
Ich werde das versuchen. Liest ReadLine immer die nächste Zeile, zu der es aufgerufen wird? Kann ich irgendwie den Wert in der Zeile vorlesen ... wie zB readline (-1) oder etwas ähnliches, um die Zeile vorher zu lesen? –
"Liest ReadLine immer die nächste Zeile, zu der es aufgerufen wird?" Nun ja - das ist es, was es tun soll. Und nein, du kannst nicht darum bitten, dich zu erinnern ... wenn du das Ergebnis des vorherigen Anrufs behalten willst, musst du das selbst tun. –