Javaは、圧縮ファイル(ZIP、RAR形式を生成します

パッケージ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())。
    }

  }

}

おすすめ

転載: www.cnblogs.com/thcy1314/p/11280521.html