很多情况下,在Windows进行操作时,直接使用cmd命令提示符会远比通过Java实现简便的多,所以我们可以通过使用Java调用cmd命令的方式来完成这一操作。
Java的Runtime.getRuntime().exec(commandStr)方法提供了调用执行cmd指令的实现。
cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
当我们需要删除一个文件夹下所有的文件时,File类里的删除方法delete()不能删除非空的文件夹,必须通过一定的逻辑代码遍历目录下所有的文件删除,比较繁琐,而使用cmd命令,只需要一行就可以实现了。
/**注:/s代表删除所有子目录及子目录下文件,/q代表删除时不需再次确认,
* @Title: deleteAllFiles
* @Description: 将目录下全部文件删除
* @param path: 目录路径(path = "D:\\Test\\Download\\")
* @return
* @throws Exception
*/
public void deleteAllFiles(String path){
try {
String cmd = "cmd /c del /s/q "+path+"\\*.*";
Runtime.getRuntime().exec(cmd).waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
移动操作
/**先执行了一遍复制命令,再删除原文件
* @Title: moveAllFiles
* @Description: 将原目录下全部文件复制到目标目录,并删除原文件
* @param originpath: 原目录路径
* @param targetpath: 目标目录路径
* @return
* @throws Exception
*/
public void moveAllFiles(String originpath,String targetpath){
try {
String cmd = "cmd /c copy " + originpath + "\\* " + targetpath + "\\";
Runtime.getRuntime().exec(cmd).waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
String cmd = "cmd /c del /s/q "+originpath+"\\*.*";
Runtime.getRuntime().exec(cmd).waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
这两个例子帮助大家理解应用的方法,凡是cmd的命令都可以如此调用,是不是觉得方便了很多,希望这篇文章对你有帮助。