Java,系统命令无法运行

dav*_*ave 2 java system

我正在尝试运行系统命令将tar.bz2文件解压缩到指定的目录.这是代码:

ProcessBuilder myProc = new ProcessBuilder("tar", "-xjf", "/path/to/MyTarFile.tar.bz2"); 
myProc.directory(new File("/directory/i/want/results/in/"));
myProc.start();
System.out.println(myProc.command());
Run Code Online (Sandbox Code Playgroud)

它运行时没有错误,但是文件被删除而不是在任何地方提取.

任何帮助将不胜感激.

Bla*_*ppo 6

我知道Runtime.exec()有一个非常讨厌的功能,如果你不手动排空STDOUT/STDERR,它实际上似乎挂起.我希望ProcessBuilder能够纠正这个缺陷,但是这个页面包含了这个小节目:

关于本提示中的示例,请注意一点.如果子进程生成足够的输出以溢出系统,则示例可能会死锁.更强大的解决方案需要在单独的线程中排除进程stdout和stderr.

因此,请确保您正在处理Process.getInputStream()和Process.getErrorStream(),正如我在评论中所建议的那样; 它可以彻底解决问题!