- 浏览: 253369 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
pshaoyi:
连接创建没问题,在执行的时候就报错了。Caused by: c ...
jdbc连接池简单封装 -
imbangbang:
中文乱码,没有解决掉
Java实现Zip压缩与解压(解决中文乱码问题) -
chjy1983:
麻烦也发份给我,chl_82@126.com,谢谢!
Java实现Zip压缩与解压(解决中文乱码问题) -
jidacwj:
楼主写的这个有问题呀首先,多线程分割文件第45行,我尝试打印每 ...
Java 大文件读取排序 -
www6wzk:
非常好的学习例子,十分感谢!
Jbpm工作流实例—报销申请
解决中文压缩与解压问题
使用的是org.apache.tools.zip包下面的相关类
下面是自己写的类,可以设置和获取Zip文件的注释信息
已经发送过去了 请查收
使用的是org.apache.tools.zip包下面的相关类
下面是自己写的类,可以设置和获取Zip文件的注释信息
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; public class ZipUtil { private String comment = ""; public void setComment(String comment) { this.comment = comment; } /** * @param src:要压缩的目录 * @param dest:压缩文件存档 * @throws Exception */ public void zip(String src, String dest, List filter) throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(dest)); File srcFile = new File(src); zip(out,srcFile,"",filter); out.close(); } /** * @param out * @param srcFile * @param base:根路径 * @param filter:过滤 * @throws Exception */ public void zip(ZipOutputStream out, File srcFile, String base, List filter) throws Exception { if(srcFile.exists()==false) { throw new Exception("压缩目录不存在!"); } if(srcFile.isDirectory()) { File[] files = srcFile.listFiles(); base = base.length() == 0 ? "" : base + "/"; if (isExist(base, filter)) { out.putNextEntry(new ZipEntry(base)); } for(int i=0; i<files.length; i++) { zip(out,files[i],base + files[i].getName(),filter); } } else { if (isExist(base, filter)) { base = base.length() == 0 ? srcFile.getName() : base ; ZipEntry zipEntry = new ZipEntry(base); zipEntry.setComment(comment); out.putNextEntry(zipEntry); FileInputStream in = new FileInputStream(srcFile); int length = 0; byte[] b = new byte[1024]; while((length=in.read(b,0,1024))!=-1) { out.write(b,0,length); } in.close(); } } } /** * 过滤出要压缩的文件夹 * @param base * @param list * @return */ public boolean isExist(String base, List list) { if (list != null && !list.isEmpty()) { for (int i = 0; i < list.size(); i++) { if (base.indexOf((String) list.get(i)) >= 0) { return true; } } } return false; } /** * @param srcFile:压缩文件路径 * @param dest:解压到的目录 * @param deleteFile:解压完成后是否删除文件 * @throws Exception */ public void unZip(String srcFile,String dest,boolean deleteFile) throws Exception { File file = new File(srcFile); if(!file.exists()) { throw new Exception("解压文件不存在!"); } ZipFile zipFile = new ZipFile(file); Enumeration e = zipFile.getEntries(); while(e.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry)e.nextElement(); if(zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0,name.length()-1); File f = new File(dest + name); f.mkdirs(); } else { File f = new File(dest + zipEntry.getName()); f.getParentFile().mkdirs(); f.createNewFile(); InputStream is = zipFile.getInputStream(zipEntry); FileOutputStream fos = new FileOutputStream(f); int length = 0; byte[] b = new byte[1024]; while((length=is.read(b, 0, 1024))!=-1) { fos.write(b, 0, length); } is.close(); fos.close(); } } if (zipFile != null) { zipFile.close(); } if(deleteFile) { file.deleteOnExit(); } } /** * 获取Zip文件的注释信息 * @param srcFile * @return */ public static String getZipComment(String srcFile) { String comment = ""; try { ZipFile zipFile = new ZipFile(srcFile); Enumeration e = zipFile.getEntries(); while (e.hasMoreElements()) { ZipEntry ze = (ZipEntry) e.nextElement(); comment = ze.getComment(); if (comment != null && !comment.equals("") && !comment.equals("null")) { break; } } zipFile.close(); } catch (Exception e) { System.out.println("获取zip文件注释信息失败:" + e.getMessage()); } return comment; } public static void main(String[] args) throws Exception { long begin = System.currentTimeMillis(); ZipUtil zu = new ZipUtil(); List<String> filter = new ArrayList<String>(); filter.add("3RDPARTY"); filter.add("BANNER.GIF"); zu.setComment("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); zu.zip("C:/VALUEADD", "c:/hh.zip",filter); System.out.println(ZipUtil.getZipComment("c:/hh.zip")); //new ZipUtil().unZip("c:/tt.zip", "c:/mmmmmmmmmmmmmmmmmmm/", true); //File f = new File("c:/hh.zip"); //f.deleteOnExit(); long end = System.currentTimeMillis(); System.out.println(end-begin); } }
评论
11 楼
imbangbang
2014-09-17
中文乱码,没有解决掉
10 楼
chjy1983
2014-07-01
麻烦也发份给我,chl_82@126.com,谢谢!
9 楼
lihua2008love
2011-09-30
可不可以把org.apache.tools.zip包 发我一份 谢谢了,非常感谢了。。谢谢了、、、 lihua2008love@163.com
8 楼
java_doc
2011-09-22
你确定解决了中文乱码问题,如果zip里面有中文还是一样的乱码。
7 楼
bjqincy
2010-07-09
org.apache.tools.zip 的jar 就是ant 的jar
6 楼
gghui_168
2010-06-13
可不可以把org.apache.tools.zip包 发我一份 谢谢了 gghui_168@hotmail.com
5 楼
beifengbei08
2010-06-13
把zip包加到附件里面可以下载吧,谢谢啦。
4 楼
Spiderweb
2010-06-12
可不可以把org.apache.tools.zip包 也发我一份啊 谢谢了 spider_web@163.com
3 楼
c15836
2010-06-12
可不可以把org.apache.tools.zip包 也发我一份啊 谢谢了 hdj5198@163.com
2 楼
royzhou1985
2009-06-22
coolboy8008 写道
可不可以把org.apache.tools.zip包 发我一份 谢谢了 coolboy8008@163.com
已经发送过去了 请查收
1 楼
coolboy8008
2009-06-11
可不可以把org.apache.tools.zip包 发我一份 谢谢了 coolboy8008@163.com
发表评论
-
Mybatis3
2012-01-08 15:07 964看了一下Mybatis3,很简洁,不错,符合一贯的原则。 -
断网情况下主机系统与VMWare虚拟系统建立网络连接
2011-03-07 13:52 1673电脑不插网线设置主机系统与VMWare中linux系统 ... -
Oracle 9i10g编程艺术
2010-12-08 23:41 1071Oracle 9i10g编程艺术 -
SWT And JFace
2010-12-01 21:29 864The_Definitive_Guide_to_SWT_and ... -
SWT 定时器 update UI
2010-11-30 17:00 1861SWT如果涉及到线程中的数据互访,在一个线程中的触发事性中再去 ... -
Log4j XML 配置方式
2010-11-14 13:00 1546Log4j xml 配置文件log4j.xml[默认读取的文件 ... -
ThreadPool 线程池的使用
2010-10-20 21:41 7489import java.util.concurrent.B ... -
Java 大文件读取排序
2010-09-30 00:34 8276需求: csv文件中存在千万级数据,需要按照某一列进行排序 比 ... -
Oracle
2010-05-29 22:26 2493最近很有兴趣研究Oracle,今天把Oracle10g ... -
JArgp Command Line Argument Processor
2010-05-12 21:02 890http://sourceforge.net/projects ... -
Java 反射与内省
2009-09-27 22:52 3447一、java反射机制 JAVA反 ... -
分页工具类Page
2009-09-26 16:10 5817public class Page { public ... -
dom4j
2009-07-22 11:52 1104DOM4J是dom4j.org出品的一个开源XML解析 ... -
Javamail 详解
2009-07-21 22:17 2807最近研究JBPM的mail node节点,使用时老是发不出邮件 ... -
proxool数据连接池总结
2009-07-10 21:41 14697数据库连接池总结----Proxool 1、所需jar包: ... -
通过url下载文件HttpURLConnection
2009-07-08 15:48 17255import java.io.*; import jav ... -
web.xml配置五个有用的过滤器
2009-07-01 14:34 3006一、使浏览器不缓存页面的过滤器 Java代码 im ... -
Tomcat 配置JNDI数据源总结
2009-04-24 09:41 2039JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程 ... -
关于web.xml中的load-on-startup作用
2009-04-19 11:51 2947load-on-startup 元素在web应用启动的时候指定 ... -
Struts2学习笔记
2009-04-18 09:55 1371包括下面内容: 一、Struts2简介.doc 二、Stru ...
相关推荐
在Java编程中,处理压缩和解压缩ZIP文件是一项常见的任务,尤其当文件中包含中文字符时,可能会遇到中文乱码的问题。这是因为Java的标准库在处理非ASCII编码时可能存在不足。本篇文章将详细介绍如何使用Java标准库...
总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.简单实用.下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\...
这里我们关注的是“文件解压和压缩”以及处理“中文乱码”的问题。在Java编程语言中,提供了多种库和工具来处理这些问题。 首先,`CompresszZipFile`是一个可能的自定义类或方法,它专门用于处理ZIP文件的解压。在...
### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...
在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...
项目中碰到问题.jdk zipEntry 压缩中文文件名乱码 上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项. 第二种 就是拿来主义,因为 开源项目 Ant 里已经有...
* @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * void */ public static void unzip(String zipFilePath, String targetPath) throws ...
这就可能导致在Java中解压包含非ASCII字符(如中文)的ZIP文件时出现问题。 Java的`java.util.zip`包提供了对ZIP文件的支持,包括`ZipInputStream`和`ZipOutputStream`类用于读写ZIP文件,以及`ZipEntry`类来代表...
下面我们将详细探讨如何使用`ZipOutputStream`进行文件压缩,并解决可能出现的乱码问题。 首先,让我们了解如何使用`ZipOutputStream`进行文件压缩的基本步骤: 1. 创建一个`FileInputStream`,用于读取要压缩的...
本文将深入探讨ZIP解压缩乱码的解决方案,帮助你解决这个问题。 1. **理解字符编码** - 字符编码是计算机存储和显示文本的方式,常见的有ASCII、GBK、UTF-8等。不同的编码方式对于特殊字符的表示不同,如果编码不...
总之,`ZipUtil`文件压缩工具类通过结合`ZipEntry`和`ZipOutputStream`,提供了一种高效且健壮的解决方案,尤其适合处理包含中文字符的文件和目录,确保在压缩和解压过程中不会出现乱码问题。这对于需要在Java应用...
总的来说,解决Java压缩中文乱码问题的关键在于正确处理文件名的编码,确保使用UTF-8编码,并在必要时自定义压缩和解压缩流。通过上述方法,即使不依赖第三方库,也可以在Java程序中实现对中文文件名的完美支持。
用java.util.zipoutputstream压缩会出现中文的文件名乱码的情况,且无法设置字符集,这个版本用org.apache.tools.zip.ZipOutputStream压缩,可以自定义字符集,解决中文的文件名乱码问题。
总之,解决Java压缩ZIP文件中文乱码问题的关键在于使用支持设置编码的第三方库,并在处理中文内容和注释时明确指定正确的字符编码。这样,无论在何种编码环境中,都能确保中文字符正确无误地被压缩和解压。
本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....
在Java编程中,处理压缩文件,特别是包含中文文件名的ZIP文件时,常常会遇到乱码问题。这是因为Java默认的字符编码与ZIP文件中的编码不一致导致的。本篇文章将详细探讨如何解决Java解压ZIP文件时遇到的中文名称问题...
通过上述步骤,可以实现基于Java向ZIP压缩包追加文件的功能,虽然这个过程涉及解压和再压缩,但它是最常见的解决方案,因为Java的标准库不直接支持追加操作。在实际应用中,可以根据具体需求进行优化和调整,以满足...
本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...