2012-04-11 50 views
1

我有一個應用程序使用7zip爲了解壓縮文件。我使用的代碼如下:Java - Running 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是解壓縮的位置。

雖然這在我的計算機上正常工作,但我的同事在運行同一個應用程序時會出錯。

在我的計算機中,通過waitFor方法將變量exitVal的值設置爲0。在其他計算機中,我看到此變量設置爲1(ERROR_INVALID_FUNCTION)。這兩款電腦的應用程序都是相同的,都使用win xp和相同版本的7zip,還有什麼可以丟失?

感謝您的幫助!

編輯:

我發現2臺計算機之間的區別。一個工作有java 7安裝,而問題有java 6

+2

你爲什麼不使用的7-Zip [SDK](HTTP:// WWW 3.7 zip.org/sdk.html)? – 2012-04-11 11:08:56

回答

3

如果您使用zip文件,你最好看看ZipInputStreamZipOutputStream。這樣你就不必依賴可能存在或不存在的工具。

如果您使用.7z文件(使用LZMA壓縮),則有一個名爲lzmajio的庫,它也會爲您提供java Streams。


資源:

+0

我正在使用7-zip文件,我正在研究如何使用7-zip SDK,之前從未做過這樣的noyhing :)謝謝! – dedalo 2012-04-11 13:42:05