java Runtime.getRunTime().exec & wildcards?

后端 未结 5 1231
余生分开走
余生分开走 2020-11-30 08:21

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. th

相关标签:
5条回答
  • 2020-11-30 08:28

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

    0 讨论(0)
  • 2020-11-30 08:32

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

    0 讨论(0)
  • 2020-11-30 08:38

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

    0 讨论(0)
  • 2020-11-30 08:42
    1. Use exec( String [] { cmd , arg1 , arg2...)

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

    0 讨论(0)
  • 2020-11-30 08:45

    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*" });
    
    0 讨论(0)
提交回复
热议问题