0
こんにちは皆さん天才!readline/writelineでの奇妙な結果
私は、txtファイルを読み込み、そのファイル内の単語「PART」で始まるすべての行を取り出し、新しいファイルに配置するコードを作成しようとしました。
どういうわけか、元のファイルの2行目ごとに出力ファイルが欠落しています。 は、これは私のコードです:
{
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
しかし、出力ファイルは、以下のように行と「パート04」「02パート」がありません:
を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
なぜですか?
ある
あなた
while
ループ内で二回reader.ReadLine()
と呼ばれています。ほとんどの場合、 'while((line = reader.ReadLine())!= null)'が必要であり、後続の呼び出しを削除します。 –私はそれを試みます。 ReadLineは、それが呼び出されるときにいつも次の行を読みますか? 何とか前に行の値を呼び出すことはできますか?前の行を読むためにreadline(-1)のようなものがありますか? –
"ReadLineは、それが呼び出されるときに常に次の行を読みますか?そうです、それはそれが意味することです。そして、いいえ、覚えておいてもらえません...以前の電話の結果を保持したい場合は、自分で行う必要があります。 –