2

我有一个使用 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

4

1 回答 1

3

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

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


资源:

于 2012-04-11T11:12:53.327 回答