5

現在のファイルを上書きせずに、似たような名前の複数のファイルを作成できるかどうか疑問に思っていました。

たとえば、ファイルがある場合: xyz.txt 次回作成するときは、xyz(1).txt にする必要があります。

try {
  File makefile = new File("output.txt");
  FileWriter fwrite = new FileWriter(makefile);
  fwrite.write("example file");
  fwrite.flush();
  fwrite.close();
} catch (IOException e) {
  e.printStackTrace();
}

したがって、このプログラムを再実行しても、現在のファイルは上書きされません。ファイル名のプレフィックスとして番号を追加するフラグ変数を使用した if 条件を既に試しました。

既存のファイルを上書きしないようにする Java コマンドがあるかどうかを知りたいです。

4

5 に答える 5

4

すでに。で示されているように、Javaではありません@Greg Kopff。ただし、次のような問題を回避できます。

  int count = 0;

  public void createFile(String name) throws IOException
  {
    File f;
    f = new File(name);
    if (!f.exists())
    {
      f.createNewFile();
    }
    else
    {
      count++;
      createFile(name + (count));
    }
  }
于 2012-04-24T09:30:44.400 に答える
2

上書きを停止するネイティブ Java コマンドがあるかどうかを知りたい [そしてファイル名に数字を追加する]

コア Java ライブラリにはありません。

于 2012-04-24T09:21:39.220 に答える
2

メソッドFile.createTempFile()を見てください。

新しいファイルを作成するには、最初に接頭辞と接尾辞を調整して、基盤となるプラットフォームの制限に合わせます。プレフィックスが長すぎる場合は切り捨てられますが、最初の 3 文字は常に保持されます。サフィックスが長すぎる場合は切り詰められますが、ピリオド文字 ('.') で始まる場合は、ピリオドとそれに続く最初の 3 文字が常に保持されます。これらの調整が行われると、新しいファイルの名前は、プレフィックス、5 つ以上の内部生成文字、およびサフィックスを連結して生成されます。

于 2012-04-24T09:26:56.710 に答える
1

Bitmap の応答に似ていますが、この Java コードを思いつきました (動作しているようです)。それが最も効率的かどうかはわかりませんが...

私の例では、ファイルが .txt ファイルになると想定しています

String fileName = "output.txt"; 
File aFile = new File(fileName);

int fileNo = 0;
while(aFile.exists() && !aFile.isDirectory()) { 
    fileNo++; 
    String newName = fileName.replaceAll(".txt", "(" + fileNo + ").txt");   
    aFile = new File(newName);
} 
于 2015-07-30T05:19:59.813 に答える