我正在尝试在我的 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,并且不会删除文件 有什么想法吗??
最佳答案
根据我的实验,find
将在找不到任何结果时返回 1
(find:/XXX/XXX/Documents/test1*: No such文件或目录
)
首先,您应该真正使用 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();
}
关于java - Runtime.getRuntime().exec(command) 总是返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34537130/