熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

java 實現壓縮與解壓縮ZIP

2013-11-15 11:35:05  來源: JSP教程 

壓縮的

import javaioBufferedInputStream;
import javaioBufferedOutputStream;
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javautilzipZipEntry;
import javautilzipZipOutputStream;

public class Zip {
    static final int BUFFER = ;

    public static void main(String argv[]) {
        try {
            BufferedInputStream origin = null;
            FileOutputStream dest = new FileOutputStream(E:\\test\\myfileszip);
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
                    dest));
            byte data[] = new byte[BUFFER];
            File f = new File(e:\\test\\a\\);
            File files[] = flistFiles();

            for (int i = ; i < fileslength; i++) {
                FileInputStream fi = new FileInputStream(files[i]);
                origin = new BufferedInputStream(fi BUFFER);
                ZipEntry entry = new ZipEntry(files[i]getName());
                outputNextEntry(entry);
                int count;
                while ((count = originread(data  BUFFER)) != {
                    outwrite(data  count);
                }
                originclose();
            }
            outclose();
        } catch (Exception e) {
            eprintStackTrace();
        }
    }
}

解壓縮的
import javaioBufferedInputStream;
import javaioBufferedOutputStream;
import javaioFile;
import javaioFileOutputStream;
import javautilEnumeration;
import javautilzipZipEntry;
import javautilzipZipFile;

public class UnZip {
    static final int BUFFER = ;

    public static void main(String argv[]) {
        try {
            String fileName = E:\\test\\myfileszip;
            String filePath = E:\\test\\;
            ZipFile zipFile = new ZipFile(fileName);
            Enumeration emu = zipFileentries();
            int i=;
            while(emuhasMoreElements()){
                ZipEntry entry = (ZipEntry)emunextElement();
                //會把目錄作為一個file讀出一次所以只建立目錄就可以之下的文件還會被迭代到
                if (entryisDirectory())
                {
                    new File(filePath + entrygetName())mkdirs();
                    continue;
                }
                BufferedInputStream bis = new BufferedInputStream(zipFilegetInputStream(entry));
                File file = new File(filePath + entrygetName());
                //加入這個的原因是zipfile讀取文件是隨機讀取的這就造成可能先讀取一個文件
                //而這個文件所在的目錄還沒有出現過所以要建出目錄來
                File parent = filegetParentFile();
                if(parent != null && (!parentexists())){
                    parentmkdirs();
                }
                FileOutputStream fos = new FileOutputStream(file);
                BufferedOutputStream bos = new BufferedOutputStream(fosBUFFER);           
                
                int count;
                byte data[] = new byte[BUFFER];
                while ((count = bisread(data  BUFFER)) != )
                {
                    boswrite(data  count);
                }
                bosflush();
                bosclose();
                bisclose();
            }
            zipFileclose();
        } catch (Exception e) {
            eprintStackTrace();
        }
    }
}

From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19246.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.