java ZipOutputStream压缩文件,ZipInputStream解压缩
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解压缩的更多相关文章
- Java实现压缩文件与解压缩文件
由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...
- java ZIP压缩文件
问题描述: 使用java ZIP压缩文件和目录 问题解决: (1)单个文件压缩 注: 以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...
- Java生成压缩文件(zip、rar 格式)
jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...
- java生成压缩文件
在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutput ...
- java zip 压缩文件
zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java zip 压缩的代码: File dir = new File("C ...
- java打包压缩文件
package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...
- java zip压缩文件和文件夹
public class FileUtil { /** * 压缩文件-File * @param out zip流 * @param srcFiles 要压缩的文件 * @param path 相对路 ...
- java对压缩文件进行加密,winrar和好压 直接输入解密密码来使用
<!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j --> <dependency> <gro ...
- Java读取压缩文件信息
不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...
随机推荐
- ACE bus
ACE bus增加的内容: 1):5状态的cache model 2):关于coherency的additional signal 3):两个cache master访问shared cache的ad ...
- [osx] android studio下修改avd的hosts文件
1. 启动avd 安装/启动avd就不说啦,可以直接在android studio里面操作的 2. 进入adb目录 当然是打开终端来敲命令啦. cd /Users/birdylee/Library/A ...
- Oracle数据库学习笔记
创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- ios学习-控制按钮图片的走动和变换
一.项目要求:制作一个界面,通过点击按钮来控制头像(按钮)向上,向下,向左,向右移动,可以左旋转,右旋转,以及放大和缩小. 二.开发步骤: 1.通过拖动按钮到storyboard搭建UI界面(后面会写 ...
- C#:获取环境信息
外部环境数据1.需要管理员权限2.需要安装office2003以上完整版3.需要安装flash reader 10.0以上4.需要安装adodb reader;Adobe Acrobat X Pro; ...
- CAS 集群部署session共享配置
背景 前段时间,项目计划搞独立的登录鉴权中心,由于单独开发一套稳定的登录.鉴权代码,工作量大,最终的方案是对开源鉴权中心CAS(Central Authentication Service)作适配修改 ...
- 《机器学习实战》学习笔记一K邻近算法
一. K邻近算法思想:存在一个样本数据集合,称为训练样本集,并且每个数据都存在标签,即我们知道样本集中每一数据(这里的数据是一组数据,可以是n维向量)与所属分类的对应关系.输入没有标签的新数据后,将 ...
- Organize Your Train part II-POJ3007模拟
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Description RJ Freight, a Japane ...
- 模板——Tarjan
#include <cstdio> #include <cstring> #include <iostream> #include <vector> u ...