如何在Java中执行rd命令?

时间:2009-05-13 10:34:51

标签: java

如何执行

  

rd / s / q c:\ folder

在Java中

它完全符合命令行。

6 个答案:

答案 0 :(得分:6)

根据dtsazza's answer

Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");

它在WinXP SP3下运行良好。 /k参数显示,必须执行必须从cmd.exe执行的命令。

祝你好运!

答案 1 :(得分:5)

检查Runtime.exec方法,该方法可让您调用外部进程。 (请记住,您将失去一些平台独立性,因为这将依赖于安装了rd命令并且在路径上的计算机。)

更好的选择可能是在纯Java中执行相同的操作 - 以下内容应该是等效的:

private void deleteDirectory(File directory)
{
   for (File entity : directory.listFiles())
   {
      if (entity.isDirectory())
      {
         deleteDirectory(entity);
      }
      else
      {
         entity.delete();
      }
   }
   directory.delete();
}

deleteDirectory(new File("C:\\folder"));

根据需要添加错误检查。 : - )

答案 2 :(得分:3)

查看Apache Commons-IO中的FileUtils;特别是deleteDirectorydeleteQuietly方法,它们都可以递归删除目录。

答案 3 :(得分:2)

查看File.delete(String path)方法,即:

new File("c:\\folder").delete();

如果/s(递归)删除很重要,那么(未经测试):

public void deltree(File file) {
    if (file.isDirectory()) {
        for (File f : file.listFiles()) {
            deltree(f);
        }
    }
    file.delete();
}

public void deltree(String path) {
    deltree(new File(path));
}

调用为:

deltree("c:\\folder");

答案 4 :(得分:1)

您只能删除Java中的空目录。首先,您必须删除文件和子目录。

 public static boolean removeDirectoryRecursively(File dir) {
            if (dir.isDirectory()) {
                String[] children = dir.list();
                for (int i = 0; i < children.length; i++) {
                    boolean success = removeDirectoryRecursively(new File(dir, children[i]));
                    if (!success) {
                        return false;
                    }
                }
            }
            // The directory is now empty so delete it
            return dir.delete();
        }

答案 5 :(得分:1)

如果您想完全按照指定的方式执行,可以执行

Process p=Runtime.getRuntime().exec("cmd.exe /k rd /s /q c:\\folder");