パッケージcom.demo.student.util。
輸入org.apache.tools.zip.ZipEntry。
輸入org.apache.tools.zip.ZipOutputStream。
輸入java.io. *;
/ **
*圧縮ファイル(ZIP、RAR形式)を生成する
* /
publicクラスCompressUtil {
/ **
* @paramパスがファイルパス圧縮する
形式によって生成された* @param形式(ZIP、RAR)D
* /
パブリック静的ボイドgenerateFile(文字列のパスを、フォーマットストリング)が例外をスロー{
ファイルファイル=新しい新しいファイル(パス);
//圧縮されたファイルのパスが存在しない
のIF {(!File.Exists())を
投げ、新たな新しい例外(「パス」+パス+「ファイルが存在しない、圧縮することができません...」) ;
}
//圧縮されたファイルフォルダ格納するために使用する
文字列をgenerateFile = file.getParent()+ + File.separator「CompressFile」;
湿布=新しい新しいファイル(generateFile)を提出;
//フォルダが存在しない場合は、それを作成します
(場合!compress.exists()){
compress.mkdirs();
}
//目的圧縮ファイル
ストリングgenerateFileName = compress.getAbsolutePath()+ File.separator + "AAA" + file.getName()+ +フォーマット"";
//入力ストリームからデータを読み出すソース表す
//ストリームは、データが一定に書き込まれる出力を表しを
//输出流
のFileOutputStream OutputStreamを=新しいのFileOutputStream(generateFileName)。
//圧縮された出力ストリーム
ZipOutputStream zipOutputStream =新しいZipOutputStream(新たなBufferedOutputStream (出力ストリーム))。
generateFile(zipOutputStream、ファイル、 "");
System.out.println( "ソースファイルの場所:" + file.getAbsolutePath()+ "オブジェクトの位置を生成する圧縮ファイル:" + generateFileName);
//出力ストリーム閉じ
zipOutputStream.closeを();
}
/ **
出力ストリームOUT @param *
ターゲットファイル* @paramのファイルを
@param DIRフォルダ*
* @throws例外
* /
プライベートの静的な無効generateFile(ZipOutputStream OUT、ファイルファイル、文字列dirが){例外がスローされます
//現在のフォルダは、その後さらにために処理される
IF(file.isDirectory()){
//ファイルの一覧情報を取得
)([]ファイル=のfile.listFilesファイル 。
//次のレベルのパッケージディレクトリにフォルダを追加
out.putNextEntry(新しいまたはZipEntry(DIR + " /"));
DIR = dir.length()== 0?"":DIR + "/";
//ループファイルフォルダパッケージ
(; Iはfiles.lengthを<; I ++はI = 0の整数)のための{
generateFile(OUT、ファイル[I]、DIR +ファイル[I] .getName());
}
}エルス{//ファイルには、現在あります
//入力ストリーム
; =新しい新規のinputStreamのFileInputStream FileInputStreamを(ファイル)
包装される//タグエントリ
out.putNextEntry(またはZipEntry新しい新しい(DIR));
//書き込み
INT LEN = 0;
バイト[]バイト=新しい新しいバイト[1024 ];
一方、((LEN = InputStream.read(バイト))> 0){
; out.write(バイト0、LEN)
}
入力ストリーム閉じ//
inputStream.closeを();
}
}
//测试
パブリック静的無効メイン(文字列[] args){
文字列のパス= "";
文字列の形式=「RAR」。
試す{
generateFile(パス、フォーマット)。
}キャッチ(例外e){
e.printStackTrace();
System.out.println(e.getMessage())。
}
}
}