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を使用していますが、他に何が欠けている可能性がありますか?

ご協力いただきありがとうございます!

編集:

2台のコンピューターの違いを見つけました。動作するものにはjava7がインストールされていますが、問題のあるものにはjava6がインストールされています

4

1 に答える 1

3

zipファイルを使用している場合は、ZipInputStreamZipOutputStreamを確認することをお勧めします。このように、そこにあるかもしれないし、ないかもしれないツールに頼る必要はありません。

.7zファイル(で圧縮)を使用している場合は、 Javaストリームも提供するlzmajioLZMAという名前のライブラリがあります。


資力:

于 2012-04-11T11:12:53.327 に答える