インポートjava.util.zip.ZipEntry; インポートjava.util.zip.ZipOutputStream; に インポート; org.apache.tools.zip.ZipEntry インポート org.apache.tools.zip.ZipOutputStream、
Antのパッケージには、クラスを提供しsetEncoding ZipOutputStream ( "GBK")方法。
zos.setEncoding( "GBK");
アリパッケージのダウンロード(新しいページを開いて、ページを入力します)
次のアドレスをダウンロード:
https://mvnrepository.com/artifact/org.apache.ant/ant/1.7.1 (ページを入力してクリックし、ページが覆われています)
パッケージファイル。 輸入java.io.BufferedInputStreamの。 輸入java.io.BufferedOutputStream。 インポートのjava.io.File; 輸入java.io.FileInputStream; 輸入java.io.FileOutputStreamは、 インポートにjava.io.IOException; 輸入org.apache.tools.zip.ZipEntry。 輸入org.apache.tools.zip.ZipOutputStream。 パブリック クラスジップ{ 公共 静的 ボイドメイン(文字列[]引数){ // 文件所在路径 文字列のパス= "E:\\試験" ; ファイルDIR = 新しいファイル(パス); IF(!dir.isDirectory()){ System.out.printlnは(パス + "! -パスが存在しません" ); } // すべてのファイルが [] =ファイルファイルの新しい新しいファイル(パス).listFilesを(); IF( ==ファイルはnull || files.length <1。){ System.out.printlnは(パス + " -なしファイルパス!" ); } // アーカイブ名の 文字列zipname = "hello.zip" ; ZIPファイルをファイル = 新しい新しいファイル(パス+ File.separator +のzipname); IF(します。ZipFiles(ファイル、ZIPファイル)== 0){ System.out.println( "压缩文件OK!" ); } } 公共の 静的な int型zipファイル(zipファイルをファイル、[]ファイルをファイル){ 場合(zipFile.exists()){ System.out.printlnは(zipファイル + " -压缩文件已存在!" ); 返す -1 ; } にBufferedInputStreamビス = NULL ; ZipOutputStream ZOS = nullを。 試す{ ZOS = 新しい ZipOutputStream(新なBufferedOutputStream(新たFileOutputStream(ZIPファイル))); バイト [] = BUFS 新しい新しい バイト [* 10 1024 ]; のための(int型 Iはfiles.lengthを<; I ++はI = 0 ){ //はZIPエンティティを作成し、圧縮された追加 のZipEntryまたはZipEntry = 新しい新しいのZipEntry(ファイル[I] .getName()); zos.putNextEntry(またはZipEntry); // 文字化け zos.setEncoding( "GBK" ); BIS = 新しい新しい BufferedInputStreamを(新しい新しい FileInputStreamを(ファイル[I])、1024 * 10 ); int型読む= 0; 一方、(!(= bis.read(BUFS、0、* 10 1024)リード)= -1 ){ zos.write(BUFS、 0 、読み出し)。 } } 戻り 0 。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); System.out.println( "压缩文件过程バグ了!" ); 返す -1 ; } 最後に{ しようと{ 場合(!ZOS = ヌル){ zos.close(); } } キャッチ(例外e){ e.printStackTrace(); } 試みる{ 場合(!ビス= NULL ){ bis.close()。 } } キャッチ(例外e){ e.printStackTrace(); } } } }