java Runtime.getRunTime()。exec&wildcards?
我正试图通过使用删除垃圾文件
Process p = Runtime.getRuntime().exec();
只要我不使用通配符,它工作正常,即这工作:
Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java");
而以下会抛出“没有这样的文件或目录”:
Process p = Runtime.getRuntime().exec("/bin/rm -f *.java");
我应该能够做到这里概述的所有好事,对吧?
我建议你让Java为你做这个吗?
- 使用file.listFiles()获取文件列表
- 如果需要,使用file.getName()。contains(string)过滤它们
- 遍历执行file.delete()的数组
优点:提高了可移植性,节省了exec()的成本
经过大量的搜索,我发现了这个: http : //www.coderanch.com/t/423573/java/java/Passing-wilcard-Runtime-exec-command
Runtime.exec(new String[] { "sh", "-c", "rm /tmp/ABC*" });
那些是Bash通配符。 它们在Bash shell中解释。 您正在直接运行rm,因此没有shell将*
解释为“所有文件”。
您可以使用bash作为命令。 例如:
Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")
Runtime.getRuntime()。exec(new String [] {“sh”,“ – c”,“gunzip * .gz”});
-
使用exec(String [] {cmd,arg1,arg2 …)
-
这是一个完整的示例,将结果作为String: Link 。