新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android zip文件壓縮解壓縮

        Android zip文件壓縮解壓縮

        作者: 時間:2016-09-12 來源:網絡 收藏

        out.write(buffer, 0, realLength);

        }

        in.close();

        out.close();

        }

        }

        /**

        * 解壓文件名包含傳入文字的文件

        *

        * @param zipFile 壓縮文件

        * @param folderPath 目標文件夾

        * @param nameContains 傳入的文件匹配名

        * @throws ZipException 壓縮格式有誤時拋出

        * @throws IOException IO錯誤時拋出

        */

        public static ArrayList upZipSelectedFile(File zipFile, String folderPath,

        String nameContains) throws ZipException, IOException {

        ArrayList fileList = new ArrayList();

        File desDir = new File(folderPath);

        if (!desDir.exists()) {

        desDir.mkdir();

        }

        ZipFile zf = new ZipFile(zipFile);

        for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {

        ZipEntry entry = ((ZipEntry)entries.nextElement());

        if (entry.getName().contains(nameContains)) {

        InputStream in = zf.getInputStream(entry);

        String str = folderPath + File.separator + entry.getName();

        str = new String(str.getBytes(8859_1), GB2312);

        // str.getBytes(GB2312),8859_1 輸出

        // str.getBytes(8859_1),GB2312 輸入

        File desFile = new File(str);

        if (!desFile.exists()) {

        File fileParentDir = desFile.getParentFile();

        if (!fileParentDir.exists()) {

        fileParentDir.mkdirs();

        }

        desFile.createNewFile();

        }

        OutputStream out = new FileOutputStream(desFile);

        byte buffer[] = new byte[BUFF_SIZE];

        int realLength;

        while ((realLength = in.read(buffer)) > 0) {

        out.write(buffer, 0, realLength);

        }

        in.close();

        out.close();

        fileList.add(desFile);

        }

        }

        return fileList;

        }

        /**

        * 獲得壓縮文件內文件列表

        *

        * @param zipFile 壓縮文件

        * @return 壓縮文件內文件名稱

        * @throws ZipException 壓縮文件格式有誤時拋出

        * @throws IOException 當解壓縮過程出錯時拋出

        */

        public static ArrayList getEntriesNames(File zipFile) throws ZipException, IOException {

        ArrayList entryNames = new ArrayList();

        Enumeration entries = getEntriesEnumeration(zipFile);

        while (entries.hasMoreElements()) {

        ZipEntry entry = ((ZipEntry)entries.nextElement());

        entryNames.add(new String(getEntryName(entry).getBytes(GB2312), 8859_1));

        }

        return entryNames;

        }

        /**

        * 獲得壓縮文件內壓縮文件對象以取得其屬性

        *

        * @param zipFile 壓縮文件

        * @return 返回一個壓縮文件列表

        * @throws ZipException 壓縮文件格式有誤時拋出

        * @throws IOException IO操作有誤時拋出

        */

        public static Enumeration getEntriesEnumeration(File zipFile) throws ZipException,

        IOException {

        ZipFile zf = new ZipFile(zipFile);

        return zf.entries();

        }

        /**

        * 取得壓縮文件對象的注釋

        *

        * @param entry 壓縮文件對象

        * @return 壓縮文件對象的注釋

        * @throws UnsupportedEncodingException

        */

        public static String getEntryComment(ZipEntry entry) throws UnsupportedEncodingException {

        return new String(entry.getComment().getBytes(GB2312), 8859_1);

        }

        /**

        * 取得壓縮文件對象的名稱

        *

        * @param entry 壓縮文件對象

        * @return 壓縮文件對象的名稱

        * @throws UnsupportedEncodingException

        */

        public static String getEntryName(ZipEntry entry) throws UnsupportedEncodingException {

        return new String(entry.getName().getBytes(GB2312), 8859_1);

        }

        /**

        * 壓縮文件

        *

        * @param resFile 需要壓縮的文件(夾)

        * @param zipout 壓縮的目的文件

        * @param rootpath 壓縮的文件路徑

        * @throws FileNotFoundException 找不到文件時拋出

        * @throws IOException 當壓縮過程出錯時拋出

        */

        private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath)

        throws FileNotFoundException, IOException {

        rootpath = rootpath + (rootpath.trim().length() == 0 ? : File.separator)

        + resFile.getName();

        rootpath = new String(rootpath.getBytes(8859_1), GB2312);

        if (resFile.isDirectory()) {

        File[] fileList = resFile.listFiles();

        for (File file : fileList) {

        zipFile(file, zipout, rootpath);

        }

        } else {

        byte buffer[] = new byte[BUFF_SIZE];

        BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile),

        BUFF_SIZE);

        zipout.putNextEntry(new ZipEntry(rootpath));

        int realLength;



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 游戏| 安义县| 利川市| 奈曼旗| 高台县| 六枝特区| 高淳县| 中西区| 东乡县| 太康县| 新和县| 四平市| 嫩江县| 湖州市| 登封市| 札达县| 石阡县| 阿坝县| 潍坊市| 镶黄旗| 吴忠市| 武定县| 页游| 威海市| 如东县| 古浪县| 赤壁市| 汉沽区| 寻乌县| 开远市| 嘉定区| 平顶山市| 山东| 登封市| 高要市| 尉犁县| 长白| 文安县| 汾阳市| 密山市| 永丰县|