Привет всем гениям!
Я попытался создать код, который читает текстовый файл и берет каждую строку, начинающуюся со слова «ЧАСТЬ» в этом файле, и помещает ее в новый файл.
Почему-то в выходном файле отсутствует каждая вторая строка исходного файла. Это мой код:
{
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);
}
}
}
Исходный файл выглядит так:
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
Но в выходном файле отсутствуют строки «Часть 02» и «Часть 04», как показано ниже:
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
Почему?
ReadLine
дважды для каждогоWriteLine
звонка. Вы почти наверняка хотитеwhile ((line = reader.ReadLine()) != null)
и удалить последующий вызов. - person Jon Skeet   schedule 19.09.2017Write
, а иногдаWriteLine
. Я сильно подозреваю, что это важно.) - person Jon Skeet   schedule 19.09.2017