我正在尝试在我的Mac上运行以下代码
String command = "find /XXX/XXX/Documents/test1* -mtime +10 -type f -delete";
Process p = null;
p = Runtime.getRuntime().exec(command);
p.getErrorStream();
int exitVal = p.waitFor();
和exitVal始终为1,它不会删除文件 任何想法??
答案 0 :(得分:2)
从我的实验中,find
会在找不到任何结果时返回1
(find: /XXX/XXX/Documents/test1*: No such file or directory
)
首先,您应该使用ProcessBuilder
,这解决了包含空格的参数问题,允许您重定向输入/错误流以及指定命令的起始位置(如果需要)
所以,玩这个,类似这样的东西,似乎对我有用(MacOSX)......
ProcessBuilder pb = new ProcessBuilder(
new String[]{
"find",
"/XXX/XXX/Documents/test1",
"-mtime", "+10",
"-type", "f",
"-delete"
}
);
pb.redirectErrorStream(true);
try {
Process p = pb.start();
InputStream is = p.getInputStream();
int in = -1;
while ((in = is.read()) != -1) {
System.out.print((char)in);
}
int exitWith = p.exitValue();
System.out.println("\nExited with " + exitWith);
} catch (IOException exp) {
exp.printStackTrace();
}