Java で作成したファイルの内容をクリアしようとしています。ファイルは PrintWriter 呼び出しによって作成されます。私はここで RandomAccessFile を使用してこれを行うことができることを読み、別の場所で、新しい PrintWriter を呼び出してすぐに閉じてファイルを空のファイルで上書きするよりも実際に使用する方が良いことを読みました。
ただし、RandomAccessFile を使用してファイルをクリアすると、null 文字の文字列がファイルに追加されているようです (または、おそらく PrintWriter でしょうか?) テキストが追加された場合にのみ発生します。
PrintWriter writer = new PrintWriter("temp","UTF-8");
while (condition) {
writer.println("Example text");
if (clearCondition) {
writer.flush();
new RandomAccessFile("temp","rw").setLength(0);
// Although the solution in the link above did not include ',"rw"'
// My compiler would not accept without a second parameter
writer.println("Text to be written onto the first line of temp file");
}
}
writer.close();
上記のコードと同等のものを実行すると、一時ファイルの内容が次のようになります。
^@^@^@^@^@^@^@^@^@^@^@^@^@Text to be written onto the first line of temp file
null 文字の数は、消去された文字数 (改行文字を含む) と同じです。ファイルに新しいテキストが追加されていない場合、ファイルは完全に空白です。
注: ライターは、ファイルがクリアされた後、「サンプル テキスト」をファイルに再度書き込むことができる必要があります。clearCondition は、while ループが壊れるという意味ではありません。
編集:これらのヌル文字の原因がわかりません。私は自分が愚かであり、一時ファイルを持つ必要はなく、後でファイルに書き込まれるすべてのデータを含む一時文字列だけであることに気付きました。文字列は = ""; で簡単にリセットできます。すべての提案をありがとう