Javaファイルを圧縮することにより、バッグのコレクタtar.gz形式を梱包

まず、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「);

}
}


  

おすすめ

転載: www.cnblogs.com/kevin-ying/p/11800775.html