没有输出的java内执行的命令行bash命令是不是像
问题描述:
使用此代码执行时产生一些输出被执行正常的所有命令,但一些命令不产生输出并不例如执行 :RM * .JPG没有工作,但MKDIR是,我无法看出区别没有输出的java内执行的命令行bash命令是不是像
我很是新手,一派相当长的一段时间,但这个特殊的问题从未被提及 请帮帮我out 谢谢
答
。在Java中,同一个shell没有运行,所以*
不被解释为通配符。
正如指出here,尝试提取目标/工作目录你的cmd
输入的和做类似:
File[] files = new File(<directory>).listFiles();
for(File file : files){
if(file.getAbsolutePath().endsWith(".jpg")){
//perform delete
}
}
或者,你可以尝试(不测试,因为我没有一个Linux ):
String[] command = new String[] {"rm", "*.jpg"}
p = Runtime.getRuntime().exec(command);
+0
executeCommand(“rm”+ FieldGraphicsDir.getText()+“/”+“* .jpg”);是输入executeCommand方法的命令 – allard
答
如果有错误,否则它将去ErrorStream,你需要附上一个也:当您运行rm *
在Linux上,shell解释,并采取*
照顾
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
通过运行'rm * .jpg'你期待什么样的输出?您是否检查过该命令是否正在运行? –
rm * .jpg当从命令行使用时,不会向用户反馈,它只会删除当前目录中的所有jpg文件。将从java程序生成的命令复制粘贴到命令行时,它确实正常工作rm * .jpg的退出输出为1,并且mkdir somedir的退出代码为0 – allard