Java 当我们使用renameTo()两次失败时,为什么?
我正在使用Win7。我第一次使用java重命名一个文件(file.cmptr到file.sql)来做一些事情,之后我想用他的旧名字(file.cmptr)来重命名它 但这失败了,当我重命名文件时,有时无法重命名。它是随机发生的 -有些时候,第一个文件根本没有改变,我也没有得到操作 -有时它会变成.sql文件,我得到了操作,但文件仍然是.sql 在我的例子中:Java 当我们使用renameTo()两次失败时,为什么?,java,windows,file,rename,Java,Windows,File,Rename,我正在使用Win7。我第一次使用java重命名一个文件(file.cmptr到file.sql)来做一些事情,之后我想用他的旧名字(file.cmptr)来重命名它 但这失败了,当我重命名文件时,有时无法重命名。它是随机发生的 -有些时候,第一个文件根本没有改变,我也没有得到操作 -有时它会变成.sql文件,我得到了操作,但文件仍然是.sql 在我的例子中: 第一次更改分机时: int dotIndex = filechose.getPath().lastIndexOf('.'); Strin
- 第一次更改分机时:
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+'"');
已解决。
它与wait for i一起工作,仅更改以下内容:
Process p = Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"');
p.waitFor();
Process p=Runtime.getRuntime().exec(“cmd/c mysql-u root gestiondestock我怀疑您在使用文件时试图重命名该文件
您可以在mysql进程上使用waitFor,也可以使用REN
将重命名添加到正在执行的脚本中。也就是说,它将在文件完成后重命名该文件。我怀疑您试图在使用该文件时重命名该文件
您可以在mysql进程上使用waitFor,也可以使用REN
将重命名添加到正在执行的脚本中。也就是说,当文件完成后,它将重命名该文件。当您第二次尝试重命名该文件时,会出现什么错误?您说“有时失败”“但是你没有解释它是如何失败的。@DanPuzey有时文件根本不重命名没有错误renameTo()
,因为所有其他file
方法都不会抛出异常,它只会返回true
或false
,这取决于成功与否。当你第二次尝试重命名文件时会出现什么错误?你说“有时失败”,但您没有解释它是如何失败的。@DanPuzey有时文件根本不重命名没有错误renameTo()
与所有其他文件
方法一样,它不会抛出异常,只会根据成功情况返回true
或false
。在本例中,使用REN或waitFro的最佳方法是什么?我会做任何您认为更简单的事情。最有可能的是,我会使用waitFor(),然后执行重命名()。如果这不是一个选项,您可以将其添加到脚本中。在本例中,使用REN或waitFro的最佳方法是什么?我会做您认为更简单的任何事情。最有可能的情况是,我会使用waitFor(),然后执行renameTo()。如果这不是一个选项,您可以将其添加到脚本中。
Process p = Runtime.getRuntime().exec("cmd /c mysql -u root gestiondestock <"+'"'+path+'"');
p.waitFor();