File.renameTo() fails

后端 未结 5 2161
半阙折子戏
半阙折子戏 2020-12-06 18:24

I have eclipse plugin jface application. A thread writes file via BufferedWriter. After writing is done I close the buffer after that I try to rename the file.

But

5条回答
  •  孤城傲影
    2020-12-06 18:57

    File.RenameTo() is platform dependent and relies on a few conditions to be met in order to succesfully rename a file, a better alternative is using

    Path source = currentFile.toPath();
    try {
         Files.move(source, source.resolveSibling(formattedName));
    } catch (IOException e) {
         e.printStackTrace();
    }
    

    Read more here.

    From the javadocs:

    Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.

    Note that the Files class defines the move method to move or rename a file in a platform independent manner.

提交回复
热议问题