Javaアーカイブ名の中国ゴミ問題

 

 

インポート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(); 
            } 
        } 

    } 
}

 

おすすめ

転載: www.cnblogs.com/likaixin/p/11365609.html