我正在尝试使用
删除垃圾文件Process p = Runtime.getRuntime().exec();
只要我不使用通配符,它就能正常工作,即这样做:
Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java");
当以下内容抛出“没有这样的文件或目录”时:
Process p = Runtime.getRuntime().exec("/bin/rm -f *.java");
我应该能够按照here提出的所有好处做,对吧?
答案 0 :(得分:12)
经过大量搜索,我发现了这一点:http://www.coderanch.com/t/423573/java/java/Passing-wilcard-Runtime-exec-command
Runtime.exec(new String[] { "sh", "-c", "rm /tmp/ABC*" });
答案 1 :(得分:9)
那些是Bash通配符。它们在Bash shell中解释。您正在直接运行rm,因此没有shell将*
解释为“所有文件”。
您可以使用bash作为命令。 e.g:
Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")
答案 2 :(得分:8)
我可以建议你让Java为你做这个吗?
优点:提高了可移植性,节省了exec()的成本
答案 3 :(得分:2)
Runtime.getRuntime()。exec(new String [] {“sh”,“ - c”,“gunzip * .gz”});
答案 4 :(得分:0)
使用exec(String [] {cmd,arg1,arg2 ...)
以下是将结果作为字符串获取的完整示例:Link。