我用的是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();
最佳答案
我怀疑您在使用文件时尝试重命名该文件。
您可以在 mysql 进程上使用 waitFor,也可以使用 REN
将重命名添加到您正在执行的脚本中。也就是说,它会在完成后重命名该文件。
关于java - 当我们使用 renameTo() 两次失败时,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160505/