2

ファイル (file.txt) があり、現在のコンテンツを空にしてから、テキストを複数回追加する必要があります。

例: file.txt 現在のコンテンツは次のとおりです。

ああ

bbb

ccc

このコンテンツを削除してから、初めて追加したい:

ddd

2回目:

ええ

等々...

私はこれを試しました:

// empty the current content
fileOut = new FileWriter("file.txt");
fileOut.write("");
fileOut.close();

// append
fileOut = new FileWriter("file.txt", true);

// when I want to write something I just do this multiple times:
fileOut.write("text");
fileOut.flush();

これは正常に機能しますが、現在のコンテンツを削除するためだけにファイルを 2 回開くため、効率が悪いようです。

4

5 に答える 5

7

ファイルを開いて新しいテキストを書き込むと、ファイルに既にあるものはすべて上書きされます。

これを行う良い方法は

// empty the current content
fileOut = new FileWriter("file.txt");
fileOut.write("");
fileOut.append("all your text");
fileOut.close();
于 2012-06-27T19:55:49.613 に答える
1

最初の答えは正しくありません。2 番目のパラメーターに true フラグを指定して新しいファイルライターを作成すると、追加モードで開きます。これにより、任意の write(string) コマンドがファイルの末尾にテキストを「追加」し、既存のテキストが消去されることはありません。

于 2012-06-27T19:58:14.790 に答える
1

私はただ愚かです。

これを行うだけで済みました:

// empty the current content
fileOut = new FileWriter("file.txt");

// when I want to write something I just do this multiple times:
fileOut.write("text");
fileOut.flush();

最後に、ストリームを閉じます。

于 2012-06-27T20:00:11.863 に答える
0

この質問はかなり前の Java バージョンで回答されていることがわかります... Java 1.7 から開始し、追加に新しい FileWriter + BufferWriter + PrintWriter を使用する (この SO 回答で推奨されているように)、ファイルを消去してから追加するための私の提案:

FileWriter fw = new FileWriter(myFilePath); //this erases previous content
fw = new FileWriter(myFilePath, true); //this reopens file for appending 
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.println("text"); 
//some code ...
pw.println("more text"); //appends more text 
pw.flush();
pw.close();
于 2016-07-07T19:55:43.617 に答える