读书人

java兑现zip与unzip

发布时间: 2012-10-21 09:00:08 作者: rapoo

java实现zip与unzip

jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1,压缩的

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;public class UnZip {    static final int BUFFER = 2048;    public static void main(String argv[]) {        try {            String fileName = "E:\\test\\myfiles.zip";            String filePath = "E:\\test\\";            ZipFile zipFile = new ZipFile(fileName);            Enumeration emu = zipFile.entries();            int i=0;            while(emu.hasMoreElements()){                ZipEntry entry = (ZipEntry)emu.nextElement();                //会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。                if (entry.isDirectory())                {                    new File(filePath + entry.getName()).mkdirs();                    continue;                }                BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));                File file = new File(filePath + entry.getName());                //加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件                //而这个文件所在的目录还没有出现过,所以要建出目录来。                File parent = file.getParentFile();                if(parent != null && (!parent.exists())){                    parent.mkdirs();                }                FileOutputStream fos = new FileOutputStream(file);                BufferedOutputStream bos = new BufferedOutputStream(fos,BUFFER);                                           int count;                byte data[] = new byte[BUFFER];                while ((count = bis.read(data, 0, BUFFER)) != -1)                {                    bos.write(data, 0, count);                }                bos.flush();                bos.close();                bis.close();            }            zipFile.close();        } catch (Exception e) {            e.printStackTrace();        }    }}
?

?

读书人网 >编程

热点推荐