使用ant.jar进行文件zip压缩

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream; /**
* 功能:
* 1 、实现把指定文件夹下的所有文件压缩为指定文件夹下指定 zip 文件
* 2 、实现把指定文件夹下的 zip 文件解压到指定目录下
*/ public class ZipUtils { public static void main(String[] args) { zip ("D:\\zip测试", "D:\\测试结果.zip"); unZip("D:\\测试结果.zip", "D:\\解压结果"); } /**
* 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件
* @param sourceDir
* @param zipFile
*/ public static void zip(String sourceDir, String zipFile) { OutputStream os; try { os = new FileOutputStream(zipFile); BufferedOutputStream bos = new BufferedOutputStream(os); ZipOutputStream zos = new ZipOutputStream(bos); File file = new File(sourceDir); String basePath = null; if (file.isDirectory()) { basePath = file.getPath(); } else {//直接压缩单个文件时,取父目录 basePath = file.getParent(); } zipFile(file, basePath, zos); zos.closeEntry(); zos.close(); } catch (Exception e) { e.printStackTrace(); } } /**
* 功能:执行文件压缩成zip文件
* @param source
* @param basePath 待压缩文件根目录
* @param zos
*/ private static void zipFile(File source, String basePath, ZipOutputStream zos) { File[] files = new File[0]; if (source.isDirectory()) { files = source.listFiles(); } else { files = new File[1]; files[0] = source; } String pathName;//存相对路径(相对于待压缩的根目录) byte[] buf = new byte[1024]; int length = 0; try { for (File file : files) { if (file.isDirectory()) { pathName = file.getPath().substring(basePath.length() + 1) + "/"; zos.putNextEntry(new ZipEntry(pathName)); zipFile(file, basePath, zos); } else { pathName = file.getPath().substring(basePath.length() + 1); InputStream is = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(is); zos.putNextEntry(new ZipEntry(pathName)); while ((length = bis.read(buf)) > 0) { zos.write(buf, 0, length); } is.close(); } } } catch (Exception e) { e.printStackTrace(); } } /**
* 功能:解压 zip 文件,只能解压 zip 文件
* @param zipfile
* @param destDir
*/ public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith("\\") ? destDir : destDir + "\\"; byte b[] = new byte[1024]; int length; ZipFile zipFile; try { zipFile = new ZipFile(new File(zipfile)); Enumeration enumeration = zipFile.getEntries(); ZipEntry zipEntry = null; while (enumeration.hasMoreElements()) { zipEntry = (ZipEntry) enumeration.nextElement(); File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) { loadFile.mkdirs(); } else { if (!loadFile.getParentFile().exists()){ loadFile.getParentFile().mkdirs(); } OutputStream outputStream = new FileOutputStream(loadFile); InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0) outputStream.write(b, 0, length); } } } catch (IOException e) { e.printStackTrace(); } } }

读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码的更多相关文章

  1. ZIP文件流压缩和解压

    前面写了一篇文章 "ZIP文件压缩和解压", 介绍了" SharpZipLib.Zip " 的使用, 最近的项目中,在使用的过程中, 遇到一些问题. 比如, 现 ...

  2. java 读取Zip文件进行写入

    直接读取ZIp文件读取写入到别的文件中. package jp.co.misumi.mdm.batch; import java.io.BufferedReader; import java.io.F ...

  3. PHP生成PDF完美支持中文,解决TCPDF乱码

    PHP生成PDF完美支持中文,解决TCPDF乱码 2011-09-26 09:04 418人阅读 评论(0) 收藏 举报 phpfontsheaderttfxhtml文档 PHP生成PDF完美支持中文 ...

  4. java实现单个或多个文件的压缩、解压缩 支持zip、rar等格式

    代码如下: package com.cn.util; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...

  5. Silverlight读取Zip文件中的图片与视频

    首先看看Demo的截图: 下面我将一步步展示实现这个Demo的过程,这个需求就是读出Zip文件中的图片与视频. Demo整体架构: 首先我们准备几张图片和视频,然后将其压缩至resource.zip文 ...

  6. php读取zip文件(删除文件,提取文件,增加文件)实例

    <?php /* php 从zip压缩文件中提取文件 */ $zip = new ZipArchive; if ($zip->open('jQuery五屏上下滚动焦点图代码.zip') = ...

  7. cocos2d-x 读取 json 文件并用 jsoncpp 做解析

    一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...

  8. Python 标准库 —— zipfile(读取 zip 文件)

    Python模块学习:zipfile zip文件操作 Python 学习入门(16)-- zipfile 0. 解压 with zipfile.ZipFile('../data/jaychou_lyr ...

  9. 读取Zip文件内容

    第一步,上次文件并保存到服务器目录下 /// <summary> /// 上传压缩文件 /// </summary> protected void UploadZip() { ...

随机推荐

  1. nginx官网下载&百度云分享

    官网下载的链接: nginx官网下载地址:http://nginx.org/download/ 百度云分享 链接:https://pan.baidu.com/s/16m6zrFSkYCJtX0rD2Y ...

  2. windchill系统——开发_角色管理——增加角色

    步骤如下 ResourceBuild wt.project.RoleRB ant -f codebase/MakeJar.xml 这样就完成了,接下来看看结果

  3. Oracle索引以及索引碎片

    索引,可以增加查询速度,若没有索引,每次查询都必须是全表查询.例如,搜索某个记录时(如name="gdpuzxs")时,需要全表扫描一下,因为不知道有多少个name="g ...

  4. [WPF+Prism]WPF个人集成平台

    前段时间学习了一下Prism,感觉应该找个机会实践一下,而且前段时间,贱内(希望我老婆看不到这篇文章:))让我帮她做个定时提醒的小工具,做好之后感觉以前做了好多自己能用的小工具,如果能够整合到一起,该 ...

  5. SQL命令查询Oracle存储过程信息(代码内容等)

    SELECT * FROM ALL_SOURCE  where TYPE='PROCEDURE'  AND TEXT LIKE '%0997500%'; --查询ALL_SOURCE中,(脚本代码)内 ...

  6. Django进阶Form篇

    一.django表单系统中,所有的表单类都作为django.forms.Form的之类创建,包括ModelForm 关于django的表单系统,主要分两种: 1.基于django.forms.Form ...

  7. B树, B-树,B+树,和B*树的区别

    B树: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中: 否则,如果查询关键字比结点关键字小,就进入左儿子:如果比结点关键字大,就进入 右儿子:如果左儿子或右儿子的指针为空, ...

  8. 【scala】getter和setter

    我们在用Java的时候经常把一些字段定义为private类型来完成封装,这样外界就无法访问. 如果外界访问或者修改该字段的时候,只能通过该字段提供的getter和setter方法来实现. 在Scala ...

  9. win+D可以最小化所有窗口,显示桌面 win+E可以快速打开我的电脑 这两个对我来说非常常用,要用熟练,节约时间

    win+D可以最小化所有窗口,显示桌面   win+E可以快速打开我的电脑

  10. JavaScript JSON.parse()和JSON.stringify()

    parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...