- 浏览: 354035 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (238)
- j2ee (22)
- mysql (14)
- hibernate (2)
- struts (3)
- spring (7)
- php (28)
- cakephp (12)
- pattern (0)
- 数据结构 (0)
- python (17)
- redis (1)
- sql (2)
- ibatis (1)
- jquery (3)
- 测试 (3)
- linux (37)
- solr (3)
- oracle (5)
- jira (5)
- 版本控制 (3)
- xp (1)
- IDE (3)
- apache (4)
- hadoop (2)
- freemarker (2)
- maven (5)
- 项目管理 (2)
- UML (1)
- Django (6)
- 正则 (1)
- Scrapy (1)
- 文档管理 (3)
- 项目集成 (8)
- MQ (3)
- 架构 (1)
- HTML (1)
- IT (1)
- 云 (0)
- 应用服务器 (4)
- win 7 (1)
- thrift (1)
- 学习 (3)
- OpenStack (3)
- sqlserver (1)
- javascript (1)
- zabbix (3)
- IOS (1)
- rabbitmq (1)
- springcloud (2)
最新评论
-
xushenkun4:
至今仍然有这个bug,0.9.1无法传输中文utf8。
thrift使用出现诡异问题 -
feiniao2029:
[i][/i][u][/u]引用
spring 配置init方法 -
wt811004:
非常感谢朋友慷慨指导
dotproject项目管理工具使用 -
hackpro:
这将是一个经典,就像大话西游...
javaeye怀旧 -
raymond2006k:
个人更偏好 Velocity。我觉得还有个对比点,就是编程方式 ...
jsp freemarker velocity 比较
1.基本解压,压缩操作
2.基于Java Zip技术压缩目录或文件
package com.jason.zip; import com.jason.j2ee.encode.ChangeCharset; import org.apache.tools.zip.ZipOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; /** * Created by IntelliJ IDEA. * User: jason * Date: 2010-6-23 * Time: 15:27:21 */ public class CompressToZip { public void zip(String inputFileName) throws Exception { String zipFileName = "d:\\批量打包.zip";// 打包后文件名字 System.out.println(zipFileName); zip(zipFileName, new File(inputFileName)); } private void zip(String zipFileName, File inputFile)throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName)); out.setEncoding(ChangeCharset.UTF_8); zip(out, inputFile, ""); System.out.println("zip done"); out.close(); } private void zip(ZipOutputStream out, File f, String base) throws Exception { if (f.isDirectory()) { File[] fl = f.listFiles(); System.out.println("新增目录元素 " +base+ "/"); out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < fl.length; i++) { zip(out, fl[i], base + fl[i].getName()); } } else { String fileName = ChangeCharset.changeCharset(base, ChangeCharset.UTF_8); System.out.println("新增普通文件元素 " +fileName); out.putNextEntry(new org.apache.tools.zip.ZipEntry(fileName)); FileInputStream in = new FileInputStream(f); int b; while ((b = in.read()) != -1) { out.write(b); } in.close(); } } public static void main(String[] args) { CompressToZip test = new CompressToZip(); try { test.zip("d:\\tmp"); } catch (Exception e) { e.printStackTrace(); } } }
2.基于Java Zip技术压缩目录或文件
package com.jason.zip; 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.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 基于Java Zip技术压缩目录或文件. * 该压缩技术支持多级目录的压缩,使用递归算法. * 问题是不支持中文,如果想要支持中文,请使用Ant的Zip技术. * * Created by IntelliJ IDEA. * User: jason * Date: 2010-6-23 * Time: 15:22:46 */ public class ZipMultiDirectoryCompress { /** * @param args */ public static void main(String[] args) { //初始化支持多级目录压缩的ZipMultiDirectoryCompress ZipMultiDirectoryCompress zipCompress = new ZipMultiDirectoryCompress(); //压缩目录,可以指向一个文件 String directory = "C:/computer"; //生成的压缩文件 String destFile = "c:/computer.zip"; //默认的相对地址,为根路径 String defaultParentPath = ""; ZipOutputStream zos = null; try { //创建一个Zip输出流 zos = new ZipOutputStream(new FileOutputStream(destFile)); //启动压缩进程 zipCompress.startCompress(zos,defaultParentPath,directory); } catch (FileNotFoundException e){ e.printStackTrace(); } finally{ try { if(zos != null)zos.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 开始压缩. * * @param zos ZipOutputStream * @param oppositePath 相对路径,开始时相对路径为空 * @param directory 压缩目录,也可能是文件 */ public void startCompress(ZipOutputStream zos, String oppositePath, String directory){ File file = new File(directory); if(file.isDirectory()){ //如果是压缩目录 File[] files = file.listFiles(); for(int i=0;i<files.length;i++){ File aFile = files[i]; if(aFile.isDirectory()){ //如果是目录,修改相对地址 String newOppositePath = oppositePath + aFile.getName() + "/"; //创建目录 compressDirectory(zos, oppositePath, aFile); //进行递归调用 startCompress(zos,newOppositePath,aFile.getPath()); } else { //如果不是目录,则进行压缩 compressFile(zos,oppositePath,aFile); } } } else { //如果是压缩文件,直接调用压缩方法进行压缩 compressFile(zos,oppositePath,file); } } /** * 压缩文件. * * @param zos ZipOutputStream * @param oppositePath 相对于路路径 * @param file 压缩的文件 */ public void compressFile(ZipOutputStream zos, String oppositePath, File file){ //创建一个Zip条目,每个Zip条目都是必须相对于根路径 ZipEntry entry = new ZipEntry(oppositePath + file.getName()); InputStream is = null; try{ //将条目保存到Zip压缩文件当中 zos.putNextEntry(entry); //从文件输入流当中读取数据,并将数据写到输出流当中. is = new FileInputStream(file); int length = 0; int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; while((length=is.read(buffer,0,bufferSize))>=0){ zos.write(buffer, 0, length); } zos.closeEntry(); }catch(IOException ex){ ex.printStackTrace(); } finally { try{ if(is != null)is.close(); }catch(IOException ex){ ex.printStackTrace(); } } } /** * 在压缩文件当中创建一个新的压缩目录,支持空目录. * * @param zos * @param oppositePath * @param file */ public void compressDirectory(ZipOutputStream zos, String oppositePath, File file){ //压缩目录,这是关键,创建一个目录的条目时,需要在目录名后面加多一个"/" ZipEntry entry = new ZipEntry(oppositePath + file.getName() + "/"); try { zos.putNextEntry(entry); zos.closeEntry(); } catch (IOException e) { e.printStackTrace(); } } }
发表评论
-
BigDecimal.setScale 处理java小数点
2013-01-24 13:48 727BigDecimal.setScale()方法用于格式化小数点 ... -
test
2012-08-17 12:39 0testa -
Tomcat内存溢出的三种情况及解决办法分析
2012-08-13 14:44 956Tomcat内存溢出的三种 ... -
java 数据格式化
2012-03-16 10:59 10001. 数字数据格式化 import java.te ... -
java URL encoding and decoding
2012-03-16 10:56 17001. URL编码 java提供了URLEncoder,URLD ... -
java面试题
2012-02-22 18:21 960JAVA面试题集 基础知识: 1.C++或Java ... -
Object类有哪些方法
2012-02-22 18:05 56231. 今天看了一个帖子,说某个公司面试题中问到Object类有 ... -
Java 调用cmd.exe命令
2011-12-29 15:16 1222public class Test { ... -
学习Java的各大网站
2011-12-22 09:03 770java 网址大全 http://www.java1995.c ... -
XML解析之DOM4J
2011-12-26 11:14 9731. 简介 java的xml解析分为: Dom ... -
jvm classloader知识
2011-12-23 10:26 9021. jvm classloader 分 bootstra ... -
下载servlet
2011-12-14 17:42 911public class DownloadServlet ... -
日期工具类
2011-12-14 17:40 1368日期工具类 public class ... -
怎样方便的读取map的key和value
2011-12-14 09:51 13031.方法一 public void getKV(){ ... -
java环境
2011-12-14 09:33 765java环境 1.Windows eg: 在环境变 ... -
当前时间毫秒转换为日期、字符串
2011-12-08 14:27 2634当前时间毫秒转换为日期、字符串 /** ... -
Comparable接口与Comparator接口的对比
2011-12-08 13:33 8871. Comparable接口与Comparator接口的对比 ... -
java集合结构图
2011-12-08 12:42 523java集合结构图 -
javaeye怀旧
2011-04-02 10:25 1114一.图片1 二.图片2 -
用 for/in 在 Java 5.0 中增强循环
2010-09-20 10:23 852for/in 循环通常叫作 增强的 for 或者 f ...
相关推荐
在Java ZIP操作中,虽然我们可以直接使用`java.util.zip`库,但Ant提供了更高级的构建脚本和任务,例如`zip`和`unzip`任务,使得文件打包和解包更加方便。以下是一个Ant构建文件(`build.xml`)的简单示例,用于压缩...
Java操作zip压缩格式的开源项目,功能强大而且使用方便,能完全满足Java操作Zip压缩文件,官方网址为:http://www.lingala.net/zip4j/ 可以下载到jar包、源码和示例,好像没有提供API文档。 不过需要使用代理访问...
这两个库各有优势,`zip4j`更专注于Zip操作,提供更丰富的API和加密功能,而`Apache Ant`则在构建自动化方面更强大。根据项目需求,可以选择合适的库或结合两者使用。记住,使用任何库时都要注意版本兼容性和安全性...
通过上述步骤,可以实现基于Java向ZIP压缩包追加文件的功能,虽然这个过程涉及解压和再压缩,但它是最常见的解决方案,因为Java的标准库不直接支持追加操作。在实际应用中,可以根据具体需求进行优化和调整,以满足...
Java中的Zip压缩与解压是常见的文件操作技术,主要用于数据的存储和传输。Apache Ant的jar包和JUnit单元测试框架在此过程中起到了辅助作用。在Java中处理Zip文件,主要涉及`java.util.zip`包下的几个类,如`...
在Java中,我们可以使用标准的`java.util.zip`库来处理基本的ZIP文件操作,但若涉及到加密和解密,就需要借助第三方库,例如`Zip4j`。本文将深入探讨如何使用Java和Zip4j库进行ZIP文件的加密与解密。 首先,`java....
Java Zip文件加密是一种重要的安全措施,它允许程序员在创建或修改Zip文件时添加一层保护,以防止未经授权的访问。在Java中,我们可以使用内置的`java.util.zip`库来实现这个功能。本篇文章将深入探讨如何在Java中对...
在IT行业中,尤其是在软件开发领域,打包文件成压缩格式如ZIP是常见的操作。Java作为一种广泛使用的编程语言,提供了丰富的API来处理这样的任务。本篇将深入讲解如何使用Java实现将文件打包成ZIP的过程,主要围绕...
在Java中,`java.util.zip`包提供了对ZIP文件的基本操作,但默认使用的是平台默认的字符集,这可能在跨平台操作时引发乱码问题。 为了解决这个中文乱码问题,我们需要在创建ZipEntry时指定合适的字符集,通常是UTF-...
以上是对这个项目的详细解析,对于想要深入理解Java ZIP操作和GUI编程的开发者来说,这是一个很好的学习资源。通过阅读和分析这些代码,你可以了解到如何在Java中实现文件的压缩、解压缩、分割以及进度反馈,同时也...
在Java编程环境中,读取ZIP文件是一项...通过熟练掌握`java.util.zip`包中的类,你可以轻松应对各种ZIP文件操作。在学习和参考项目示例源代码时,确保理解每一步的作用,这将有助于你在实际工作中更好地应用这些知识。
在Java编程语言中,创建ZIP压缩包是一项常见的任务,特别是在软件开发中,如构建Web应用程序。本资源提供了一种解决方案,解决了使用Java打zip包时可能会遇到的中文乱码和包含空文件的问题。以下是关于这个主题的...
Java中的Zip打包主要涉及到对文件或文件夹进行压缩处理,这是一种常见的数据存储和传输方式。在Java中,我们可以使用内置的`java.util.zip`包来实现这个功能。下面将详细介绍如何使用Java进行Zip打包,以及涉及到的...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
在Java编程中,有时我们需要对已经存在的ZIP文件进行操作,比如替换其中的某个文件,而无需将整个ZIP文件解压后再重新压缩。这样的需求在处理大量数据或优化性能时尤其重要,因为它避免了创建临时文件和多次I/O操作...
Java实现Zip压缩文件操作的工具类 文章介绍:https://blog.csdn.net/rongbo91/article/details/117747042 (可作为Jar依赖包直接使用) 1、项目使用前,请进入rdc-bom目录下,执行mvn clean install命令 2、可...
ZIP文件内部通常使用UTF-8编码来存储文件名和路径,但并非所有ZIP工具都遵循这个标准,有的可能使用本地操作系统默认编码,比如GBK或ISO-8859-1。这就可能导致在Java中解压包含非ASCII字符(如中文)的ZIP文件时出现...
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
标题“JAVA ZIP压缩打包下载”指的是使用Java编程语言来实现ZIP文件的压缩和打包功能。在Java中,我们可以使用java.util.zip包中的ZipOutputStream类来完成这个任务。这个过程涉及读取文件,创建ZIP输出流,并将文件...