java Runtime.getRunTime().exec & wildcards?

落爺英雄遲暮 提交于 2019-11-26 11:15:08

问题


i\'m trying to remove junk files by using

Process p = Runtime.getRuntime().exec();

it works fine as long as i do not use wildcards, i.e. this works:

Process p = Runtime.getRuntime().exec(\"/bin/rm -f specificJunkFile.java\");

while the following throws back \"No such file or directory\":

Process p = Runtime.getRuntime().exec(\"/bin/rm -f *.java\");

i should be able to do all the nice things as outlined here, right?


回答1:


Might I suggest that you let Java do this for you?

  • Use file.listFiles() to get the list of files
  • Use file.getName().contains(string) to filter them if needed
  • iterate over the array performing file.delete()

Advantage: improved portability, saves the cost of an exec()




回答2:


After a lot of searching I found this: http://www.coderanch.com/t/423573/java/java/Passing-wilcard-Runtime-exec-command

Runtime.exec(new String[] { "sh", "-c", "rm /tmp/ABC*" });



回答3:


Those are Bash wildcards. They are interpreted within the Bash shell. You are running rm directly, so there is no shell to interpret the * as 'all files'.

You could use bash as the command. e.g.:

Runtime.getRuntime().exec("/path-to/bash -c \"rm *.foo\"")




回答4:


Runtime.getRuntime().exec(new String[] { "sh", "-c", "gunzip *.gz" });




回答5:


  1. Use exec( String [] { cmd , arg1 , arg2...)

  2. Here's a full example to get the result as a String : Link.



来源:https://stackoverflow.com/questions/2111983/java-runtime-getruntime-exec-wildcards

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!