如何执行
在Java中rd / s / q c:\ folder
?
它完全符合命令行。
答案 0 :(得分:6)
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;特别是deleteDirectory和deleteQuietly方法,它们都可以递归删除目录。
答案 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");