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

标签 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();

最佳答案

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

您可以在 mysql 进程上使用 waitFor,也可以使用 REN 将重命名添加到您正在执行的脚本中。也就是说,它会在完成后重命名该文件。

关于java - 当我们使用 renameTo() 两次失败时,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160505/

相关文章:

java - 如何在 JAVA 的多线程环境中从 config.properties 加载属性

javascript - 使用 Node.js 管理文件

javascript - 检测从网站安装的软件

windows - Windows 的 Git GUI 窗口丢失和/或不可见

c - PostMessage 似乎不起作用?

linux - 打开文件时在 linux 中会发生什么?

java - Apache Camel 获取交换路径

java - 为什么我的 JVM 会进行一些运行时循环优化并使我的代码出现错误?

java - 从按钮获取文本到选定的文本字段

java - android.widget.TextView.setTextAlignment() : java. lang.NoSuchMethodError