亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java的源文件數(shù)據(jù)測試研究

        2017-03-11 01:41:08趙景惠
        關(guān)鍵詞:中文名稱源文件亂碼

        ◆趙景惠

        (北京交通大學(xué)經(jīng)濟管理學(xué)院 北京 100044)

        基于Java的源文件數(shù)據(jù)測試研究

        ◆趙景惠

        (北京交通大學(xué)經(jīng)濟管理學(xué)院 北京 100044)

        本文在討論實現(xiàn)zip數(shù)據(jù)壓縮常用類后,針對JDK提供的ZIP包在壓縮中文文件時出現(xiàn)的亂碼問題,提出了修改ZIP包源代碼和利用Ant包兩個解決亂碼問題的方法,最后利用Ant包實現(xiàn)了一個壓縮中文文件夾的類,其壓縮時間和壓縮比介于winrar和winzip之間,該壓縮方法有一定的實用價值。

        Java;Ant;winrar;winzip;ZIP算法;文件壓縮

        0 引言

        Java在文件壓縮和解壓方面 Java提供了兩種最常用的壓縮算法GZIP和ZIP。GZIP算法相對簡單且沒有ZIP算法使用范圍廣,下面主要討論ZIP算法。

        1 zip數(shù)據(jù)壓縮常用類

        Java 1.7實現(xiàn)了I/O數(shù)據(jù)流與網(wǎng)絡(luò)數(shù)據(jù)流的單一接口,因此數(shù)據(jù)的壓縮、網(wǎng)絡(luò)傳輸和解壓縮的實現(xiàn)比較容易。一個zip文件由多個entry組成,每個entry有一個唯一的名稱,entry的數(shù)據(jù)項存儲壓縮數(shù)據(jù)。實現(xiàn) zip數(shù)據(jù)壓縮兩個主要 Java類是 ZipEntry和ZipOutputStream。

        (1)類ZipEntry:

        public ZipEntry(String name); name為指定的數(shù)據(jù)項名。(2)類ZipOutputStream:

        ZipOutputStream實現(xiàn)了zip壓縮文件的寫輸出流,支持壓縮和非壓縮 entry。對于要加入壓縮檔的每一個文件,都必須調(diào)用putNextEntry(),并將其傳遞給一個ZipEntry對象。ZipEntry對象包含了一個功能全面的接口,使用它可以獲得和設(shè)置Zip文件內(nèi)那個特定的 Entry(入口)上能夠接受的所有數(shù)據(jù):名字、壓縮后和壓縮前的長度、日期、CRC校驗和、額外字段的數(shù)據(jù)、注釋、壓縮方法,以及它是否為一個目錄入口等[1]。

        2 壓縮中文名稱的文件

        在Java應(yīng)用程序中,對文字的編碼是以unicode為基礎(chǔ)的,壓縮的文件名,也是以unicode來編碼的,然而,在現(xiàn)今市面上的大部分壓縮軟件,比如winzip、winrar等,不支持unicode的編碼方式,因而用Java軟件壓縮后的中文文件名顯示出來是亂碼。要解決在壓縮中文文件時出現(xiàn)的亂碼問題,可通過以下兩種方式解決。

        2.1 修改ZIP包源代碼

        對文件的壓縮是通過ZipOutputStream類來完成,通過修改這兩個類的編碼方式,可以對中文文件名進行處理[2]。

        從JDK的src.zip取得ZipOutputStream.java源代碼(通常在JDK的安裝目錄下),另存為CNZipOutputStream.java。修改源代碼如下。

        public CNZipOutputStream(OutputStream out,String encoding){

        super(out,new Deflater(Deflater.DEFAULT_COMPRESSION,true));

        usesDefaultDeflater=true;

        this.encoding=encoding;

        }

        byte[] nameBytes=null;

        try{

        if(this.encoding.toUpperCase().equals(“UTF-8”))

        nameBytes=getUTF8Bytes(e.name);

        else

        nameBytes= e.name.getBytes(this.encoding);

        }

        catch(Exception byteE){

        nameBytes=getUTF8Bytes(e.name);

        }

        2.2 利用ant包實現(xiàn)myzip類

        也可以利用開源的Apache項目提供的ant包來壓縮中文名稱的文件,下載URL地址為http://ant.apache.org/,下載ant源文件apache-ant-1.7.0-src.zip,解壓后在Ant的org包里有實現(xiàn)zip算法的全部java源文件,利用import org.apache.tools.zip.*命令導(dǎo)入這些類文件即可。Ant包提供的ZIP壓縮類解決了壓縮中文名稱文件時的亂碼問題。以下為用ant包實現(xiàn)的類myzip的過程,利用myzip類的類方法zipFile即可實現(xiàn)中文文件夾的壓縮[3]。

        import org.apache.tools.zip.*;

        import java.io.*;

        public class myzip {

        public static void zipFile(String inputFileName , String zipFileName) throws Exception {

        File zipFileSrc=new File(inputFileName);

        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));

        zip(out, zipFileSrc, "");

        }

        private void zip(ZipOutputStream out, File f, String base) throws Exception {

        if (f.isDirectory()) {

        File[] fl = f.listFiles();

        for (int i = 0; i 〈 fl.length; i++) {zip(out, fl[i], base + fl[i].getName());}

        }else {

        out.putNextEntry(new ZipEntry(base));

        FileInputStream fin = new FileInputStream(f);

        while ((num=fin.read(buf))!=-1){out.write(buf,0,num);}

        fin.close();

        } } }

        3 測試和結(jié)論

        通過在微機上文件壓縮測試,得出本文利用Java編寫的壓縮程序myzip同winzip和winrar在壓縮時間和壓縮后尺寸的數(shù)據(jù),通過比較發(fā)現(xiàn)myzip和winzip、winrar的壓縮比基本接近,但myzip的時間消耗多于winzip和winrar。綜合來看,myzip的性能接近winrar和winzip,在winrar和winzip程序代碼未開源的情況下它還是有一定的實用價值。

        [1]汪曉平,俞俊,李功.精通Java網(wǎng)絡(luò)編程[M].北京:清華大學(xué)出版社,2010.

        [2]袁海燕,王文濤.Java實用程序設(shè)計100例[M].北京:人民郵電出版社,2015.

        [3]張軍麗.Java中文件壓縮的實現(xiàn)[J].池州師專學(xué)報,2005.

        猜你喜歡
        中文名稱源文件亂碼
        這些真的不是亂碼,是漢字
        網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
        基于源文件可疑度的軟件缺陷定位方法研究
        LKJ基礎(chǔ)數(shù)據(jù)源文件自動編制系統(tǒng)的研究
        國際品牌要注重保護商標(biāo)的中文名稱
        國際品牌在華商標(biāo)保護究竟出了什么問題?
        炫邁:用神奇亂碼勾引你視線
        誤寫C源文件擴展名為CPP的危害
        如何解決Tomcat的亂碼
        為何歌曲在手機上顯示亂碼?等
        久久综合九色综合网站| 国产黄久色一区2区三区| 日产乱码一二三区别免费l| 人妻少妇边接电话边娇喘| 婷婷九月丁香| 99久久亚洲精品加勒比| 国产精品久久久在线看| 在线天堂www中文| 少妇高潮喷水正在播放| 精品国产亚洲av麻豆尤物| 国产精品一区二区韩国av| 性饥渴的农村熟妇| 免费无码av片在线观看网址 | 日韩精品中文字幕 一区| 老女人下面毛茸茸的视频| 在线观看成人无码中文av天堂| 久久免费看少妇高潮v片特黄| 天堂av无码大芭蕉伊人av孕妇黑人| 国产色av一区二区三区| 欧美猛少妇色xxxxx猛交| 成年男女免费视频网站| 男女在线免费视频网站| 日本系列中文字幕99| 丰满人妻熟妇乱又伦精品软件| 欧美亚洲国产日韩一区二区三区| 精品日韩av专区一区二区| 中文字幕久久波多野结衣av不卡| 性一交一乱一伦一色一情孩交| 91孕妇精品一区二区三区| 日本久久大片中文字幕| 精品国产第一国产综合精品| 亚洲av无码成人精品区天堂 | 久久精品国产亚洲AV古装片| 久久亚洲中文字幕伊人久久大| 帮老师解开蕾丝奶罩吸乳网站| 国产亚洲精品自在久久蜜tv | 一区二区视频网站在线观看| 国产精品视频亚洲二区| 国产成人无码免费看片软件| www.av在线.com| 成人大片免费视频播放一级|