Java - 运行 7zip

标签 java process runtime 7zip

我有一个使用 7zip 来解压缩文件的应用程序。我使用的代码如下:

Runtime prog = Runtime.getRuntime();
Process proc = prog.exec(System.getenv("ProgramFiles").concat("\\7-Zip\\7z x " + "\""+path+"\""+ " -o"+Values.temp_path));

InputStream stderr = proc.getErrorStream();
InputStream instr = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
InputStreamReader insr = new InputStreamReader(instr);
BufferedReader br = new BufferedReader(isr);
BufferedReader br2 = new BufferedReader(insr);
String line = null;
String line2 = null;

while ( (line = br.readLine()) != null & (line2 = br2.readLine()) != null){}

int exitVal = proc.waitFor();

其中,path 是文件的位置,temp_path 是解压缩文件的位置。

虽然这在我的计算机上运行良好,但我的同事在运行同一个应用程序时遇到错误。

在我的计算机中,变量 exitVal 的值被 waitFor 方法设置为 0。在其他计算机上,我看到此变量设置为 1 (ERROR_INVALID_FUNCTION)。两台计算机上的应用程序是相同的,都使用 win xp 和相同版本的 7zip,我还可能缺少什么?

感谢您的帮助!

编辑:

我发现了两台电脑之间的差异。有效的安装了 java 7,而有问题的安装了 java 6

最佳答案

如果您使用 zip 文件,您最好看看 ZipInputStreamZipOutputStream 。这样您就不必依赖可能存在或不存在的工具。

如果您使用 .7z 文件(使用 LZMA 压缩),则有一个名为 lzmajio 的库这也将为您提供 java Streams。


资源:

关于Java - 运行 7zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104589/

相关文章:

java - 动态设置 Java Web 应用程序的资源

java - BigDecimal bigDecimal = BigDecimal.ONE;

java - 注释异常 :mappedBy reference an unknown target entity property

java - Nim 游戏再次出错

haskell - 连接到 GHC 运行时系统

java - 使用动态键序列化 JSON 响应

c - Fork() 和 Posix 队列。发送和接收字符串

objective-c - 如何在 OS X 的 objective-c 代码中使用 "nettop"获取网络统计信息?

ruby-on-rails - 如何在 CarrierWave 进程中创建新文件?

c++ - 读取 cin 时超出运行时间但从文件读取时未超出运行时间?