Jak*_*kob 11 java shell command wildcard runtime.exec
我正试图通过使用删除垃圾文件
Process p = Runtime.getRuntime().exec();
Run Code Online (Sandbox Code Playgroud)
只要我不使用通配符,它工作正常,即这工作:
Process p = Runtime.getRuntime().exec("/bin/rm -f specificJunkFile.java");
Run Code Online (Sandbox Code Playgroud)
而以下会抛出"没有这样的文件或目录":
Process p = Runtime.getRuntime().exec("/bin/rm -f *.java");
Run Code Online (Sandbox Code Playgroud)
我应该能够做到这里概述的所有好事,对吧?
小智 13
经过大量搜索,我发现了这个:http://www.coderanch.com/t/423573/java/java/Passing-wilcard-Runtime-exec-command
Runtime.exec(new String[] { "sh", "-c", "rm /tmp/ABC*" });
Run Code Online (Sandbox Code Playgroud)
那些是Bash通配符.它们在Bash shell中解释.您正在直接运行rm,因此没有shell将其解释*
为"所有文件".
您可以使用bash作为命令.例如:
Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")
我建议你让Java为你做这个吗?
优点:提高了可移植性,节省了exec()的成本
归档时间: |
|
查看次数: |
8517 次 |
最近记录: |