0

出力が .txt ファイルに書き込まれるプログラムを Java で作成しています。プログラムを実行するたびに、ファイルが上書きされます。append スイッチを使用してファイルにデータを追加したくありません。

プログラムを実行するたびに、同じ名前の新しいファイルが作成されるようにしたいと思います。たとえばoverflow.txt、ファイル名が で、プログラムを 3 回実行すると、ファイルoverflow(1).txtoverflow(2).txt、およびoverflow(3).txtが作成されます。

これはどのように達成できますか?

4

5 に答える 5

3

ファイルが存在するかどうかを確認し、存在する場合は名前を変更します。File.existsと_FileUtils.moveFile

競合がなくなるまで、これを再帰的に行う必要があります。

于 2012-06-15T17:46:31.527 に答える
2

「同じ名前の新しいファイル」は、ほとんどのファイル システムでは意味がありません。

あなたの例では、異なる名前の3 つのファイルがあります。

  • オーバーフロー(1).txt
  • オーバーフロー (2).txt
  • オーバーフロー(3).txt

括弧内のビットは、まだ名前の一部です。その動作をエミュレートしたい場合は、次のことを行う必要があります。

  • 「プレーンな」ファイル名の存在を検出します(存在しない場合に書き込みたい場合)
  • 1 からカウントを開始し、拡張子を削除するたびに「新しい」ファイル名を作成し、括弧内にカウントを追加してから、拡張子を元に戻します。
  • 存在しないファイル名が見つかるまで数え続けます
于 2012-06-15T17:46:11.420 に答える
0

File オブジェクトをインスタンス化するときは、存在するかどうかを確認し、存在する場合は、中かっこと番号を追加して名前を変更し、もう一度確認します。

于 2012-06-15T17:47:04.913 に答える