java呼び出し7 zip圧縮パッケージの例


前言
最近のプロジェクトでは、解凍パッケージの機能が必要です。お客様が提供する圧縮パッケージのフォーマットは主にrarとzipです。ですから、Javaを使って7 zipのコマンドラインを呼び出して解凍ファイルを行うつもりです。ここでは、実現過程と問題点を記録します。
7 zipコマンドライン

7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>]
7 zのcompandsにはファイルを圧縮パッケージに追加したり、圧縮パッケージからファイルを削除したり、ファイルを抽出したりするなどの複数のコマンドが含まれています。ここでは、7 zipのインストールディレクトリにcmdを使って7 z.exeを実行して具体的なコマンドを確認することができます。
今日私たちがやるべきことは、暗号を使って圧縮カバンの中のファイルを抽出することです。具体的な命令は以下の通りです。

7z x         -o       -aoa -bse1 -p  

•x:圧縮パッケージからファイルを抽出することを示す
•-ao a:aoは上書きモードを表し、最後のaは直接既存のファイルを上書きすることを示します。
•-bs<0|1|2>:set output stream for output/error/progressライン
-bsコマンドは、実はよく分かりませんでした。文面の意味は、出力/エラー/プロセスラインのための出力ストリームを設定します。もし-bse 1属性を設定しないと、解凍エラーが発生します。例えば、ファイルが見つからないと、エラーメッセージはcmdウィンドウに表示されます。生成されたロゴファイルではなく、-bse 1コマンドを追加しなければなりません。
javaはcmdで7 zipを呼び出して解凍します。

String filePath = "F:\\test\\        .rar";
//                       
filePath = filePath.replaceAll(" ", "\" \""); 

String command = "cmd /c start /B D:/  /7zip/7-Zip/7z.exe x "+filePath+" -oF:/test/ -aoa -bse1 -p123 >F:/test/1.txt";
System.out.println(command);
Runtime.getRuntime().exec(command);
cmd命令解釈
•cmd/c start 7 z.exeは7 zを起動して後ろのコマンドを実行すると表しています。7 z起動後は元のcmdウィンドウが閉じられます。
•cmd/k start 7 z.exeは7 zを起動して後ろのコマンドを実行すると表しています。7 z起動後、元のcmdウィンドウは閉じられません。
•/Bはアプリケーションを起動することを示しますが、新しいウィンドウは作成されません。
以上のコードを通じて、圧縮パッケージファイルを解凍できます。解凍パスワードが正しいかどうかや、圧縮パケットが破損しているかどうかなどの情報を知るには、txtログファイルを作成した内容を取得することによって、これは本編の範囲の後ではなく、後でまた話します。
遭遇した問題
7 z.exeファイルのパスが見つかりませんでした。
この問題が発生したのは、7 zipのインストール経路にスペースがあるからです。
ソリューション:
•7 zipインストールのパスを選択して、空白のパスには取り付けないでください。
•経路中のスペースをダブルクォーテーションを使って、C:「Program Files」または7-Zipまたは「C:\Program Files\7-Zip」またはC:\Program「」Files\7-Zip
ファイルパスに連続して複数のスペースがあります。ファイルが見つかりません。
この問題が発生したのは

Runtime.getRuntime().exec(command)
方法は実行中に、ファイルパスの複数の連続したスペースを単一のスペースに変換します。この場合、ファイルの全パスの外側にダブルクォーテーションマークを付けても大丈夫です。
ソリューション:
•ファイルパスのスペースを置換し、各スペースをダブルクォーテーション付きのスペースに置き換えればいいです。
以上のjavaは7 zipを呼び出して圧縮袋を解凍しました。その例は小編集が皆さんに提供した内容の全部を共有しました。参考にしていただければと思います。どうぞよろしくお願いします。