3

任意のユーティリティを使用して、Java.ioからファイルの名前を強制的に変更できますか?
Java 7 にこれらの機能があることは理解していますが、使用できません
...

File tempFile = File.createTempFile();
tempFile.renameTo(newfile)

newfile が存在する場合は失敗します。

強制的に名前を変更するにはどうすればよいですか?

4

3 に答える 3

5

手動で行う必要があると思います-つまり、実際の名前変更を行う前に、ターゲット名が既にファイルとして存在するかどうかを確認し、削除する必要があります。

それを行うために、ルーチンを書くことができます:

public void forceRename(File source, File target) throws IOException
{
   if (target.exists()) target.delete();
   source.renameTo(target)
}

このアプローチの欠点は、別のプロセスを削除した後、名前を変更する前に、その名前の新しいファイルが作成される可能性があることです。

したがって、別の可能性として、ソースのコンテンツをターゲット ファイルにコピーし、後でソース ファイルを削除することもできます。ただし、これは (ファイルのサイズに応じて) より多くのリソースを消費するため、削除されたファイルが再作成される可能性が高い場合にのみ実行する必要があります。

于 2010-01-18T11:48:47.403 に答える
0

いつでもnewFile最初に削除できます:

File newFile = ...
File file = ...

newFile.delete();
file.renameTo(newFile);
于 2010-01-18T11:49:33.427 に答える