我希望能够在Java代码中执行这样一个命令,
gzip -c /tmp/specificPreffix_2013-11-06.txt > /tmp/specificPreffix_2013-11-06.txt.gz
我的系统是RHEL5,我已经授予了文件访问权限。
当我使用开源的org.apache.commons.exec.DefaultExecutor时,它无法工作。请问有谁能指出这是为什么,或者告诉我是否有其他方法。提前感谢。
您可以按照以下方式使用:
CommandLine cmd = new CommandLine("gzip").addArgument("-c").addArgument("/tmp/specificPreffix_2013-11-06.txt").addArgument(">").addArgument("/tmp/specificPreffix_2013-11-06.txt.gz");
OutputStream outputStream = new ByteArrayOutputStream();
DefaultExecutor exec = new DefaultExecutor();
exec.setWatchdog(new ExecuteWatchdog(timeoutInMilliSeconds));
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
exec.setStreamHandler(streamHandler);
exec.execute(cmd);
>
。尝试通过执行器运行bash
,将-c
作为第一个参数,将你要运行的整个字符串作为第二个参数。 - Dawood ibn KareemCommandLine cmd = new CommandLine("bash").addArgument("-c").addArgument("gzip /tmp/specificPreffix_2013-11-06.txt");
我做错了什么吗? - JunjieRuntime.getRuntime().exec( ... )
吗? - Dawood ibn KareemRuntime.getRuntime().exec( ... )
,如果我不使用>
,它可以正常工作,一旦我在命令中添加>
,它就会失败。所以Runtime.getRuntime().exec("gzip /tmp/specificPreffix_2013-11-06.txt)
可以工作,但我无法重定向标准输出。 - Junjie