Java删除并重命名文件问题

时间:2012-04-20 12:52:11

标签: java

下面的方法具有简单地将文件从“工作”移动到“移动”目录的功能,该目录通过方法调用接收路径。这一切都有效,但是对于文件名具有两个扩展名(如.xml.md5)的情况,其中.renameTo方法返回false。有没有办法改变下面的代码,所以它可以工作,无论它运行的操作系统。 (目前是Windows)

public void moveToDir(String workDir, String moveDir) throws Exception {
    File tempFile = new File(workDir);
    File[] filesInWorkingDir = tempFile.listFiles();
    for (File file : filesInWorkingDir) {
        System.out.println(file.getName());
        if (new File(moveDir + File.separator + file.getName()).exists()) 
            new File(moveDir + File.separator + file.getName()).delete();
        System.out.println(moveDir + File.separator + file.getName());
        Boolean renameSuccessful = file.renameTo(new File(moveDir + File.separator + file.getName()));
        if (!renameSuccessful) throw new Exception("Can't move file to " + moveDir +": " + file.getPath());
    }
}

1 个答案:

答案 0 :(得分:2)

我简化了您的代码并添加了检查删除是否成功。试试吧。

public void moveToDir(String workDir, String moveDir) {
  for (File file : new File(workDir).listFiles()) {
      System.out.println(file.getName());
      final File toFile = new File(moveDir, file.getName());
      if (toFile.exists() && !toFile.delete())
        throw new RuntimeException("Cannot delete " + toFile);
      System.out.println(toFile);
      if (!file.renameTo(toFile))
        throw new RuntimeException(
          "Can't move file to " + moveDir +": " + file.getPath());
  }
}