`
yuanfen860913
  • 浏览: 115679 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

支持zip的压缩,zip的解压【支持一级目录的,不支持多级】

阅读更多

package com.zwc.www.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

/**
* 支持zip的压缩,zip的解压
*/
public class OperateZip {
private File sourceFile;
private File destFile;

/**
* 压缩文件
*/
public void zip(){
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(this.destFile));
FileInputStream fis = null;
ZipEntry ze = null;
File[] files = this.sourceFile.listFiles();
int length = 0;
byte[] b = new byte[1024];
for(int i = 0; i < files.length; i ++){
File file = files[i];
fis = new FileInputStream(file);
this.process(file);
ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
while((length = fis.read(b)) != -1){
zos.write(b, 0, length);
}
}
fis.close();
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
/**
* 解压文件
*/
public void unzip(){
try {
ZipFile sourceZipFile = new ZipFile(this.sourceFile);
InputStream zis = null;
@SuppressWarnings("unchecked")
Enumeration<ZipEntry> e = (Enumeration<ZipEntry>) sourceZipFile.entries();
FileOutputStream fos = null;
ZipEntry ze = null;
int length = 0;
byte[] b = new byte[1024];
while(e.hasMoreElements()){
ze = e.nextElement();
zis = sourceZipFile.getInputStream(ze);
File file = new File(this.destFile,ze.getName());
fos = new FileOutputStream(file);
while((length = zis.read(b)) != -1){
fos.write(b, 0, length);
}
fos.flush();
fos.close();
}
zis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 中间处理过程
*/
public File process(File file){
return file;
}
/**
* 设置压缩文件存放位置和压缩文件名
*/
public void setZipFile(String sourceDir, String zipDir, String zipFileName){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH_mm_ss");
String date = sdf.format(new Date());
zipFileName = "".equals(zipFileName)? date + ".zip" : zipFileName;
if(zipDir.lastIndexOf(File.separator) == zipDir.length() - 1){
this.destFile = new File(zipDir + zipFileName);
}else{
this.destFile = new File(zipDir + File.separator + zipFileName);
}
this.sourceFile = new File(sourceDir);
}
/**
* 设置解压文件存放位置
*/
public void setUnzipDir(String sourceFile ,String unzipDir){
this.sourceFile = new File(sourceFile);

if(unzipDir.lastIndexOf(File.separator) == unzipDir.length() - 1){
this.destFile = new File(unzipDir);
}else{
this.destFile = new File(unzipDir + File.separator);
}
this.destFile = new File(unzipDir);

}
public static void main(String[] args) {
OperateZip oz = new OperateZip();
oz.setZipFile("C:\\key", "C:\\", "");
oz.zip();

/*oz.setUnzipDir("c:\\2010-12-09 16_17_03.zip", "C:\\key_bak");
oz.unzip();*/
}

}

分享到:
评论

相关推荐

    JAVA解压ZIP多层目录文件(需ant.jar

    完美支持解压zip文件多层文件解压,文件夹,文件,支持中文。

    VC使用ZLIB压缩解压多级文件夹

    修改了其中一个bug,他在解有压缩的3级以上的目录的zip文件时,解压之后文件夹目录不对中途会退出,3级以内正常。改进后经测试CAD安装文件解压6级目录正常使用。另外在函数内部增加了多级目录自动创建,可避免主目录...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    包含了使用的jar包,以及一个Java类,实现了使用Java对多目录多层级的文件进行打包,以及对ZIP包进行解压缩的操作。

    使用ZLIB库压缩解压源码(支持多级文件目录)

    使用ZLLIB压缩解压,封装压缩文件夹,加压标准ZIP的源码

    VC使用ZLIB压缩解压文件和3级以上多级文件夹综合应用

    上的资源改进后封装而成,修改了其中一个bug,他在解有压缩的3级以上的目录的zip文件时,解压之后文件夹目录不对中途会退出,3级以内正常。改进后经测试CAD安装文件解压6级目录正常使用。另外在函数内部增加了多级...

    使用ZLIB库压缩解压源码(支持多级文件目录压缩和解压)

    这个资源原本是下载自:csdn论坛的yangyou2009 的资源“使用ZLIB库压缩解压...修改了其中一个bug,他在解有压缩的有多目录的zip文件时,解压之后文件夹目录不对。 这里特别感谢yangyou2009,我在其中学习了很多东西。

    使用ZLIB库压缩解压源码(支持多级文件夹压缩和解压)

    这个资源原本是下载自:csdn论坛的yangyou2009 的资源“使用ZLIB库压缩解压...修改了其中一个bug,他在解有压缩的有多目录的zip文件时,解压之后文件夹目录不对。 这里特别感谢yangyou2009,我在其中学习了很多东西。

    C++ 使用Windows API实现对多级文件路径的压缩和解压

    C++ 使用Windows API实现对多级文件路径的压缩和解压,代码有编译好的可执行程序,在bin目录下,可直接运行,代码使用VS2013编写,使用Dialog实现。

    使用Java向服务器上传文件压缩包并实现解压缩

    使用Java远程上传压缩包到服务器,或者在服务器上拉去压缩包或者文件,在服务器上创建目录。

    Qt压缩、解压库quazip

    Qt下最常用的压缩、解压库Qualib,自己编译,实测可用。 1、提供debug、release DLL; 2、Qualib依赖的头文件; 3、支持多级文件夹和文件的压缩、解压以及通用的zip和rar格式。

    Qt压缩解压库Quazip

    Qt下最常用的压缩、解压库Qualib,自己编译,实测可用。 1、提供debug、release DLL; 2、Qualib依赖的头文件; 3、支持多级文件夹和文件的压缩、解压以及通用的zip和rar格式。

    sharpziplib文件夹递归压缩解压缩源码修改版20140424

    已知问题:不支持空文件的压缩 支持:1.多重文件夹压缩 2.解决不用从根目录压缩,即如果压缩的是C:\a\b\c\d ,压缩成C:\x.zip,打开看到的是d\....而非a\b\c\d\... 本代码基于xjzdr的代码上修改,主要修改了压缩...

    ziparchive_src.zip

    带Cmake,Windows和Linux下都可使用,基于ZLIB开发的C++源码,支持多级目录、加密解密压缩和解压,亲测可用。

    C++ minizip+zlib文件夹的加密压缩和解压缩

    紧接着《C++ zlib库源码编译及简单使用(VS2019)》后,我们使用minizip+zlib,对多级文件夹进行加密压缩成zip文件,然后对zip文件进行解压缩。 支持WinRAR、360zip等第三方工具解密解压。

    YodPHP 1.4.1.zip

    token错误:下载时、zip文件解压等; 压缩文件内图片预览不了问题;压缩文件内文本文件预览;zip提示错误问题优化;文件列表;内容含有乱码兼容处理(iconv报错优化);全文搜索,中文截取导致json解析错误问题;...

    易语言模块大全(共775个模块)

    创建多级目录(1.0).zip 超级模拟msn模块(1.0).zip 窗口动画效果模块 V1.0(1.0).zip Cool皮肤模块(1.0).zip CPU占用率检测模块(1.0).zip ceshi (1.0).zip 磁盘相关(1.0).zip 创建快捷方式模块2.2(1.0).zip 创建任意...

    易语言700模块打包

    创建多级目录(1.0).zip 超级模拟msn模块(1.0).zip 窗口动画效果模块 V1.0(1.0).zip Cool皮肤模块(1.0).zip CPU占用率检测模块(1.0).zip ceshi (1.0).zip 磁盘相关(1.0).zip 创建快捷方式模块2.2(1.0).zip ...

    盛世桃源通用文件管理系统 v2.5 for .net 2.0/3.0/3.5.zip

    9.文件和目录可进行压缩解压ZIP操作,使得可以批量上传及批量下载文件。 10.文件转发功能,可将多个文件下载地址通过邮件或短信发送给他人下载,并可设置下载次数及天数。 11.在线编辑文本文件、播放任何影音文件...

    UPUPW PHP v5.2.17 经典怀旧版套装 c1.zip

    6、支持虚拟主机可在任意磁盘建立网站目录,并且每个目录可单独绑定多级域名或泛域名 ;   主要组成: Apache PHP MySQL phpMyAdmin Memcached eAccelerator ZendDebugger ZendOptimizer。 主体部分:  Apache...

    桃源网络硬盘.Net v5.8.zip

    9.文件和目录可进行压缩解压ZIP操作,可以批量上传及批量下载文件。 10.文件提取功能,可同时定义多个文件的提取码,提取码可个性化定义,并可限制下载次数及天数。 11.上传码功能,可定义一个目录的外部允许上传...

Global site tag (gtag.js) - Google Analytics