まず、Javaファイルをパッケージ化する方法
Mavenの1.1アドイン依存
<依存性> <のgroupId> org.apache.commons </のgroupId> <たartifactId>コモンズ-圧縮</たartifactId> <バージョン> 1.12 </バージョン> </依存>
1.2包装コアコード
以下のような手段梱包考え方は次のとおりです。Apachecompress
-
①:作成し
FileOutputStream
た出力ファイル(.tar.gz形式)ファイルを。 -
②:作成
GZIPOutputStream
ラップするために使用され、FileOutputStream
オブジェクトを。 -
③:作成
TarArchiveOutputStream
ラップするために使用され、GZIPOutputStream
オブジェクトを。 -
④:すると、フォルダ内のすべてのファイルを読み込みます。
-
⑤:それがディレクトリである場合は、それがに追加されます
TarArchiveEntry
。 -
⑥:ファイルがまだにそれを追加した場合
TarArchiveEntry
、そのファイルの内容を書き込む必要があるTarArchiveOutputStream
で。
輸入org.apache.commons.compress.archivers.tar.TarArchiveEntry。 輸入org.apache.commons.compress.archivers.tar.TarArchiveOutputStream。 輸入org.apache.commons.io.IOUtils。 輸入java.io. *;
輸入java.util.zip.GZIPOutputStream。
{クラスTarUtilsパブリック
パブリック静的ボイド圧縮(sourceFolder文字、文字列tarGzPathが)にIOException {スロー
createTarFile(sourceFolder、tarGzPathを);
}
プライベート静的ボイドcreateTarFile(sourceFolder文字、文字列tarGzPath){
TarArchiveOutputStream里芋= NULL;
試み{
//はたFileOutputStreamを作成します出力ファイル(.tar.gz形式)のFileOutputStreamのFOSは=新しい新しいのFileOutputStream(tarGzPath)へ;
// GZIPOutputStreamを作成し、GZIPOutputStreamなどGZIPOutputStream = GOS((FOS)新新をBufferedOutputStreamが)として、新たな新しいのFileOutputStreamオブジェクトをパッケージ化するため;
// TarArchiveOutputStreamを作成し、ためオブジェクトGZIPOutputStreamパッケージ
里芋=新しいTarArchiveOutputStream(GOS)を、
100以上のバイトのファイル名は、例外がスローされますと、このモードが設定されている場合は、次のように//、例外がある:
//が長すぎます(> 100バイト)
、具体的公式ドキュメントを参照してください//します。http://コモンズ。 apache.org/proper/commons-compress/tar.html#Long_File_Names
tarOs.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
addFilesToTarGZ(sourceFolder、 ""、里芋);
}キャッチ(IOExceptionをE){
e.printStackTrace();
} {最後に
{試みる
tarOs.close();
}キャッチ(IOExceptionをE){
e.printStackTrace();
}
}
}
公共の静的な無効addFilesToTarGZは、(文字列filePathには、文字列の親、TarArchiveOutputStream tarArchive)はIOExceptionがスロー{
ファイルファイル=新しいファイル(filePathにします)。
//親ファイルパットに対するエントリ名を作成します
)(文字列ENTRYNAME =親+ file.getName。
//添加タールArchiveEntry
tarArchive.putArchiveEntry(新しいTarArchiveEntry(ファイル、ENTRYNAME));
IF(file.isFile()){
FileInputStreamのFIS =新しいFileInputStreamを(ファイル)。
BufferedInputStreamをビス=新たにBufferedInputStream(FIS)。
//写入文件
IOUtils.copy(ビス、tarArchive)。
tarArchive.closeArchiveEntry();
bis.close();
(file.isDirectory()){}他のIF
//フォルダの内容を記述することなく、閉じることができ、ため
tarArchive.closeArchiveEntry();
//フォルダを読み、すべてのファイル
(ファイルfのために:file.listFiles( )){
//再帰
addFilesToTarGZ(f.getAbsolutePath()、+ File.separator ENTRYNAME、tarArchive);
}
}
}
公共の静的な無効メイン(文字列[]引数)はIOExceptionがスロー{
//テスト波、filebeat-7.1。 filebeat-7.1.0-linuxの-x86_64.tar.gzタールパッケージとして0-のlinux-x86_64のパッケージ名
圧縮( "/ユーザ/ a123123 /仕事/ filebeat-7.1.0-linuxの-x86_64版"、「/ユーザ/ a123123 /Work/tmp_files/filebeat-7.1.0-linux-x86_64.tar.gz「);
}
}