H5W3
当前位置:H5W3 > 其他技术问题 > 正文

java 实现压缩与解压缩ZIP

压缩的
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class Zip {    static final int BUFFER = 2048;    public static void main(String argv[]) {        try {            BufferedInputStream origin = null;            FileOutputStream dest = new FileOutputStream(E:\\test\\myfiles.zip);            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(                    dest));            byte data[] = new byte[BUFFER];            File f = new File(e:\\test\\a\\);            File files[] = f.listFiles();            for (int i = 0; i < files.length; i++{                FileInputStream fi = new FileInputStream(files[i]);                origin = new BufferedInputStream(fi, BUFFER);                ZipEntry entry = new ZipEntry(files[i].getName());                out.putNextEntry(entry);                int count;                while ((count = origin.read(data, 0, BUFFER)) != 1{                    out.write(data, 0, count);                }                origin.close();            }            out.close();        } catch (Exception e) {            e.printStackTrace();        }    }}2,解压缩的。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();        }    }}

本文地址:H5W3 » java 实现压缩与解压缩ZIP

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址