web-dev-qa-db-ja.com

Java既存の出力ファイルを上書きする

私のプログラムは現在使用しています

FileOutputStream output = new FileOutputStream("output", true);

Whileループは、出力ファイルがまだ作成されていない場合は作成し、whileループの繰り返しごとにこのファイルにデータを追加して、

 output.write(data).  

これで問題ありません。

プログラムをもう一度実行すると、正確な情報がファイルの末尾に追加されるため、ファイルのサイズが2倍になります。これは私が望むものではありません。プログラムを再度実行した場合、ファイルを上書きしたいと思います。

12
john stamos

このドキュメント は、渡すパラメータがappendパラメータであることを示唆しています。

署名は次のようになります

FileOutputStream(File file, boolean append)

追加したくないので、このパラメーターをfalseに設定する必要があります。

FileOutputStream output = new FileOutputStream("output", false);
25
Sam I am

プログラムを再度実行した場合、ファイルを上書きしたいと思います。

appendをfalseに設定するには、2番目の引数としてfalseを渡します。

FileOutputStream output = new FileOutputStream("output", false);

コンストラクタのドキュメント を確認してください:

2番目の引数がtrueの場合、バイトはファイルの先頭ではなく末尾に書き込まれます。

14
Rohit Jain

または、ファイルが存在する場合は削除して、常に作成してジョブを実行することもできます。

0
Tony Hopkinson