【问题标题】:Force rename a file in Java在 Java 中强制重命名文件
【发布时间】:2011-01-06 08:12:14
【问题描述】:

我可以使用任何实用程序对 Java.io 中的文件进行强制重命名吗?
我知道 Java 7 有这些功能,但我不能使用它...
如果我做一个

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

如果新文件存在,那么它就会失败。

如何强制重命名?

【问题讨论】:

    标签: java file file-io rename file-rename


    【解决方案1】:

    我认为您必须手动进行 - 这意味着您必须检查目标名称是否已经作为文件存在并在进行真正的重命名之前将其删除。

    你可以写一个例程,来做:

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

    这种方法的缺点是,在删除和重命名另一个进程之前,可能会创建一个具有该名称的新文件。

    因此,另一种可能性是将源文件的内容复制到目标文件中,然后删除源文件。但这会消耗更多资源(取决于文件的大小),并且只有在可能重新创建已删除文件的情况下才应该这样做。

    【讨论】:

    • 然后尝试第二种解决方案,复制内容并删除旧文件。我应该提供示例代码吗?
    【解决方案2】:

    你总是可以先删除newFile

    File newFile = ...
    File file = ...
    
    newFile.delete();
    file.renameTo(newFile);
    

    【讨论】:

      【解决方案3】:

      无论何时打开文件夹,我都无法重命名。在 Java 中设置以下属性解决了我的问题:

      dirToRename.setExecutable(true); 
      

      【讨论】:

        猜你喜欢
        • 2011-12-18
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 2018-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多