0

私は2つFileWriterのsを次々に使用しています。

最初のものは追加されません

BufferedWriter versionWriter = new BufferedWriter(new FileWriter(new File(filePath)));
versionWriter.write(s);
versionWriter.close();

一方、後の方を追加していただきたいと思います。

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true));
bw.newLine();
bw.write(s);

問題は、最初FileWriterにファイル全体が破壊され、データが失われることです。

2つのsを使用している理由FileWriterは、最初の1つはテキストファイルの最初の行を上書きすることになっているのに対し、2つ目はファイルの最後に追加することになっているためです。

これを行う正しい方法は何ですか?

編集:最初にすべてを読み取ってから保存し直すことは可能ですが、特にファイルに大量のデータを保存する必要があるため、これは非常に非効率的です。

4

1 に答える 1

2

RandomAccessFile.seek(...)を使用して、特定の位置にあるファイルにデータを書き込みます。

ただし、メモリへの読み取り、最初の行の置き換え、ファイルへの書き込みを行う以外に、「ファイルの最初の行を置き換える」魔法はありません。その線が常に同じ長さでない限り。また、EOL文字を上書きしないように注意してください。:-)

ところで、閉じる前にflush()を呼び出すことを忘れないでください。

于 2013-03-24T12:01:17.030 に答える