java Runtime.getRunTime().exec & wildcards?

♀尐吖头ヾ 提交于 2019-11-27 04:33:23

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()

Malvika

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*" });

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\"")

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

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

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

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