java中实现zip的压缩与解压缩。java自带的 能实现的功能比较有限。

本程序功能:实现简单的压缩和解压缩,压缩文件夹下的所有文件(文件过滤的话需要对File进一步细节处理)。

对中文的支持需要使用java7或java8,可以在ZipOutputStream和ZipInputStream中指定Charset参数,详见API中的构造参数。

1.压缩文件或文件夹

 public void zip() throws IOException {
File fileSrc = new File("E:\\abc");
File destFile = new File("E:\\abc.zip");
zip(fileSrc,destFile);
}
 public void zip(File fileSrc,File dectFile) throws IOException {
ZipOutputStream zipOutputStream = new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(dectFile),new CRC32()));
String name = fileSrc.getName();
zip(zipOutputStream, name,fileSrc);
zipOutputStream.flush();
zipOutputStream.close();
}

zip

 private void zip(ZipOutputStream zipOutputStream,String name, File fileSrc) throws IOException {
if (fileSrc.isDirectory()) {
File[] files = fileSrc.listFiles(new FilenameFilter() { //过滤文件
Pattern pattern = Pattern.compile(".+");//所有文件,正则表达式
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
zipOutputStream.putNextEntry(new ZipEntry(name+"/")); // 建一个文件夹
name = name+"/";
for (File f : files) {
zip(zipOutputStream,name+f.getName(),f);
}
}else { zipOutputStream.putNextEntry(new ZipEntry(name));
FileInputStream input = new FileInputStream(fileSrc);
byte[] buf = new byte[1024];
int len = -1;
while ((len = input.read(buf)) != -1) {
zipOutputStream.write(buf, 0, len);
}
zipOutputStream.flush();
input.close();
}
}

zip

2.解压缩zip文件

 public void unzip() throws IOException {
File zipFile = new File("E:\\java.zip");
String destDir = "E:\\java\\";
unzip(zipFile,destDir);
}
 private void unzip(File zipFile, String destDir) throws IOException {
ZipInputStream zipInputStream = new ZipInputStream(new CheckedInputStream(new FileInputStream(zipFile),new CRC32()));
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
System.out.println(zipEntry.getName());
File f = new File(destDir + zipEntry.getName());
if(zipEntry.getName().endsWith("/")){
f.mkdirs();
}else {
// f.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(f);
byte[] buf = new byte[1024];
int len = -1;
while ((len = zipInputStream.read(buf)) != -1) { // 直到读到该条目的结尾
fileOutputStream.write(buf, 0, len);
}
fileOutputStream.flush();
fileOutputStream.close();
}
zipInputStream.closeEntry(); //关闭该条目
}
zipInputStream.close();
}

unzip

java ZipOutputStream压缩文件,ZipInputStream解压缩的更多相关文章

  1. Java实现压缩文件与解压缩文件

    由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...

  2. java ZIP压缩文件

    问题描述:     使用java ZIP压缩文件和目录 问题解决:     (1)单个文件压缩 注:     以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...

  3. Java生成压缩文件(zip、rar 格式)

    jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...

  4. java生成压缩文件

    在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutput ...

  5. java zip 压缩文件

    zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java  zip  压缩的代码: File dir = new File("C ...

  6. java打包压缩文件

    package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...

  7. java zip压缩文件和文件夹

    public class FileUtil { /** * 压缩文件-File * @param out zip流 * @param srcFiles 要压缩的文件 * @param path 相对路 ...

  8. java对压缩文件进行加密,winrar和好压 直接输入解密密码来使用

    <!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j --> <dependency> <gro ...

  9. Java读取压缩文件信息

    不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...

随机推荐

  1. Android中ListView动态加载数据

    1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的 ...

  2. vmware workstation unrecoverable error: (vmui)报错解决方法

    实验室7月份刚换了电脑,之前一直用vmware来跑linux搞嵌入式开发,无论是宿舍的笔记本,还是之前用的旧台式机,都可以妥妥的跑vmware没有问题,结果换了新电脑之后,装上vmware works ...

  3. Java IO设计模式彻底分析 (转载)

    一.引子(概括地介绍Java的IO) 无论是哪种编程语言,输入跟输出都是重要的一部分,Java也不例外,而且Java将输入/输出的功能和使用范畴做了很大的扩充.它采用了流的 机制来实现输入/输出,所谓 ...

  4. 自定义Chrome插件Vimium

    自定义快捷键 map e scrollPageUp map w removeTab map s nextTab map a previousTab map q goNext map z restore ...

  5. robots.txt文件没错,为何总提示封禁

    大家好,我的robots.txt文件没错,为何百度总提示封禁,哪位高人帮我看看原因,在此谢过. 我的站点www.haokda.com,robots.txt如下: ## robots.txt for P ...

  6. Clouda聊天室实践

    1.Clouda说明 Clouda是简单,可依赖的实时Javascript框架.对一个想开发移动webapp的开发者来说,可以使用clouda开发框架,实现一个功能和体验与native app齐平的轻 ...

  7. 有关docker的学习链接

    本文是自己搜索的比较好的网上资源,便于有兴趣者查阅. 英文官网 https://docs.docker.com/engine/getstarted/ 中文入门手册 http://www.docker. ...

  8. 07-阻塞赋值与非阻塞赋值原理分析——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的:掌握阻塞赋值与非阻塞赋值的区别 实验平台:无 实验原理:     阻塞赋值,操作符为"=","阻塞"是指在进程语句( ...

  9. Sql Server 中一个非常强大的日期格式化函数

    Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0)-- 05 16 2006 10:57AMSelect CONV ...

  10. redis 相关命令

    /etc/init.d/redis-serveredis-cli 进入redis/etc/init.d/redis-server stop /etc/init.d/redis-server start ...