0

次のコードがあります。テキストファイルに別の行を書き込もうとしていますが、改行を追加すると\ n希望どおりに実行されません。代わりに、すべての行が同じ行にあります。どうすれば修正できますか?コードのセクションはこれです

Writer writer = null;
File file = new File("C:/output.txt");
writer = new BufferedWriter(new FileWriter(file));
//code to iterate 
writer.write(output);
writer.write("\n");
// code to close each line
4

4 に答える 4

5

Windowsでは、デフォルトの改行(メモ帳などで使用)は"\r\n"です。次を呼び出すことにより、プラットフォームのデフォルトの改行を使用できますBufferedWriter.newLine()

// This would replace your call to writer.write("\n")
writer.newLine();

もちろん、Windows以外のボックスでは、ファイルが奇妙に見える場合があります...基本的に、テキストファイルは期待するほど移植性がありません。(たとえば)Linuxボックスで実行している場合でも、Windowsの改行が確実に書き込まれるようにする場合は、writer.write("\r\n")代わりに書き込みます。

これらの方針に沿って、少なくとも、代わりにOutputStreamWriterラッピングを使用することを検討する必要があります。そうすれば、使用するエンコーディングを指定できます(UTF-8など)。現在、コードはプラットフォームのデフォルトエンコーディングを使用しますが、これは実際に必要なものではない可能性があります。FileOutputStreamFileWriter

于 2012-09-06T11:04:25.170 に答える
2

System.getProperty("line.separator") を使用してみてください...

于 2012-09-06T11:05:11.627 に答える
2

試しましたか

writer.newLine();

JDKのドキュメントには次のように書かれています:

システム プロパティ line.separator で定義されているように、プラットフォーム独自の行セパレータの概念を使用する newLine() メソッドが提供されています。すべてのプラットフォームが改行文字 ('\n') を使用して行を終了するわけではありません。

そのため、基盤となる OS で動作するはずです。

于 2012-09-06T11:10:33.773 に答える
0

ご協力いただきありがとうございます。私のコードは「\ n」でうまく機能することに気付きましたが、問題はtxtファイルに書き込んでからメモ帳を使用して開くことでした。メモ帳は \n を無視しますが、ワードパッドは無視しません。

于 2012-09-11T12:03:06.290 に答える