当我们使用renameTo()2次失败时,为什么?

时间:2012-08-28 13:38:57

标签: java windows file rename

我正在使用Win7。我使用java第一次重命名文件(file.cmptr到file.sql)来做一些事情,之后我想用他的旧名称重命名它(file.cmptr)

但是失败了,当我重命名文件时,有些时候无法重命名。它是随机发生的。

- 有些时候第一个文件根本没有改变,我没有得到操作

- 有时它改为.sql文件,我得到了操作,但文件保留.sql

在我的例子中

  • 我第一次更改扩展名:

    int dotIndex = filechose.getPath().lastIndexOf('.');
    String newpath = filechose.getPath().substring(0, dotIndex);;
    newpath = newpath + ".sql";
    File filefinal = new File(newpath); 
    filechose.renameTo(filefinal);
    String path=newpath;
    

使用新文件执行操作后:

Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"');

最后我想再次重命名该文件

File file1 = new File(path);
int dotIndex1 = path.lastIndexOf('.');
String newpath1 = path.substring(0, dotIndex1);
newpath1 = newpath1 + ".computeramg";
File file2 = new File(newpath1); 
file1.renameTo(file2);

解决。
它可以等待我只改变这个:

  Process p = Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"');

                 p.waitFor();

1 个答案:

答案 0 :(得分:3)

我怀疑您正在尝试在文件使用时重命名该文件。

您可以在mysql进程上使用waitFor,或者可以使用REN将重命名添加到正在执行的脚本中。即所以它会在文件完成后重命名。