- 浏览: 1541055 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (225)
- JAVA (27)
- Spring (49)
- Linux (51)
- JavaScript (8)
- Scrum (23)
- IDE (2)
- JSON (2)
- Solr (0)
- Webharvest (0)
- Hibernate (8)
- 杂谈 (3)
- Windows 7 (4)
- 持续集成 (23)
- tomcat (3)
- Android (1)
- SpringSecurity (11)
- Maven (9)
- jotm (3)
- C3P0 (1)
- Active Directory (2)
- cas (1)
- JQuery (2)
- ajax (1)
- plsql (2)
- nginx (4)
- apache (1)
- thrift (7)
- python (3)
- oracle (4)
- php (2)
- redis (1)
- fedora (1)
- windows7 (0)
- SVN (1)
- NFS (1)
- SAMBA (1)
- Atomikos (1)
- apache-poi (1)
- mysql (2)
- vncserver (1)
- mac (2)
- firefox (1)
- JIRA (1)
- p6spy (1)
- git (1)
- github (1)
- gitlab (1)
- gogs (1)
- Druid (1)
- MyBatis (1)
- docker (8)
- zabbix (1)
最新评论
-
lialatd:
您好,我用您的方法通过java api往jira系统中添加is ...
JIRA REST API ---- JAVA -
sprcen945:
可以了,是因为没加intercept-url 的拦截, 尼玛, ...
SpringSecurity3.X--Cas client 配置 -
sprcen945:
请问为什么我配了security.xml后切入点不起作用(之前 ...
SpringSecurity3.X--Cas client 配置 -
linxingyul:
根据楼主的代码 继承了WebMvcConfigurationS ...
SpringMVC4零配置--Web上下文配置【MvcConfig】 -
java_老头:
MvcConfig.java的FilterType.ANNOT ...
SpringMVC4零配置--Web上下文配置【MvcConfig】
通过java打zip包或者解压zip包,没什么特别的,jdk已经提供了API。
一。批量文件打压缩与解压缩,打好的zip包可以使用winrar进行解压
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; 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.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import com.netqin.servlet.CommonServlet; //import org.apache.tools.zip.ZipEntry; //import org.apache.tools.zip.ZipOutputStream; /** 注释乱码。 经过反复测试,发现中文支持有问题。 * google了一下解决方案,用ant包中的两个类 //import org.apache.tools.zip.ZipEntry; //import org.apache.tools.zip.ZipOutputStream; * 替换Java包的对应的两个类 import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; 即可完美支持中文。 */ /** * Java版的Zip工具 * */ public class ZipTool { private static final int BUFF_SIZE = 1024 * 1024; // 1M Byte /** * * 批量压缩文件(夹) * * * @param resFileList 要压缩的文件(夹)列表 * * @param zipFile 生成的压缩文件 * * @throws * IOException 当压缩过程出错时抛出 */ public static void zipFiles(List<File> resFileList, File zipFile) throws IOException { ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream(zipFile), BUFF_SIZE)); for (File resFile : resFileList) { zipFile(resFile, zipout, ""); } zipout.close(); } /** * * 批量压缩文件(夹) * * * @param resFileList 要压缩的文件(夹)列表 * * @param zipFile 生成的压缩文件 * * @param comment 压缩文件的注释 * * @throws IOException 当压缩过程出错时抛出 */ public static void zipFiles(List<File> resFileList, File zipFile, String comment) throws IOException { ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream(zipFile), BUFF_SIZE)); for (File resFile : resFileList) { zipFile(resFile, zipout, ""); } zipout.setComment(comment); zipout.close(); } /** * 描述 : <将文件写入压缩包中>. <br> *<p> * @param resFile * @param zipout * @param rootpath * @throws IOException */ private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException { rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator) + resFile.getName(); if (resFile.isDirectory()) { File[] fileList = resFile.listFiles(); for (File file : fileList) { zipFile(file, zipout, rootpath); } } else { byte buffer[] = new byte[BUFF_SIZE]; BufferedInputStream in = new BufferedInputStream( new FileInputStream(resFile), BUFF_SIZE); zipout.putNextEntry(new ZipEntry(rootpath)); int realLength; while ((realLength = in.read(buffer)) != -1) { zipout.write(buffer, 0, realLength); } in.close(); zipout.flush(); zipout.closeEntry(); } } /** * * 解压缩一个文件 * * * @param zipFile 压缩文件 * * @param folderPath 解压缩的目标目录 * * @throws * IOException 当压缩过程出错时抛出 */ @SuppressWarnings("unchecked") public static void upZipFile(File zipFile, String folderPath) throws IOException { ZipFile zf = new ZipFile(zipFile); for (Enumeration entries = zf.entries(); entries.hasMoreElements();) { ZipEntry entry = ((ZipEntry) entries.nextElement()); InputStream in = zf.getInputStream(entry); OutputStream out = new FileOutputStream(folderPath + File.separator + entry.getName()); byte buffer[] = new byte[BUFF_SIZE]; int realLength; while ((realLength = in.read(buffer)) > 0) { out.write(buffer, 0, realLength); } in.close(); out.close(); } } public static void main(String[] args) throws IOException { List resFileList = new ArrayList(); resFileList.add(new File("C:\\new.gif")); resFileList.add(new File("C:\\HelloWorld.java")); resFileList.add(new File("C:\\crebas.sql")); resFileList.add(new File("E:\\log.log")); resFileList.add(new File("C:\\ooo\\upx\\")); File zipFile = new File("C:\\txxxt.zip"); ZipUtils.zipFiles(resFileList, zipFile); } }
二.流压缩及解压缩
/** * 描述 : <将流打包到文件>. <br> *<p> * @param b 数据流 * @param filename 压缩包文件路径 * @return * @throws IOException */ public static String makeZipFile(byte[] b, String filename) throws IOException { File file = new File(filename+".zip"); ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream( new FileOutputStream(file), BUFF_SIZE)); zipout.putNextEntry(new ZipEntry(filename)); zipout.write(b); zipout.flush(); zipout.closeEntry(); zipout.setComment(""); zipout.close(); return fileNewName; } /** * 描述 : <获得文件的数据流>. <br> *<p> * @param filename 文件路径 * @return * @throws FileNotFoundException */ public static byte[] getZipFileByte(String filename) throws FileNotFoundException { File file = new File(filename); byte buffer[] = new byte[BUFF_SIZE]; InputStream stream = null; byte[] data = null; try { if (file.canRead()) { stream = new FileInputStream(file); data = new byte[Integer.parseInt(String.valueOf(file.length()))]; stream.read(data); } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } finally { if (stream != null) { try { stream.close(); } catch (IOException e) { e.printStackTrace(); } } } return data; } /** * 描述 : <对数据流进行压缩,并返回压缩后的数据流>. <br> *<p> * * @param b * @return */ public byte[] getZipByte(byte[] b) { byte[] compressed = null; ByteArrayOutputStream out = null; ZipOutputStream zout = null; try { out = new ByteArrayOutputStream(); zout = new ZipOutputStream(out); zout.putNextEntry(new ZipEntry("0")); zout.write(b); zout.closeEntry(); compressed = out.toByteArray(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (zout != null) { try { zout.close(); } catch (IOException e) { } } if (out != null) { try { out.close(); } catch (IOException e) { } } } return compressed; } /** * 将压缩后的 byte[] 数据解压缩 * * @param compressed * 压缩后的 byte[] 数据 * @return 解压后的字符串 * @throws ClassNotFoundException */ public static final byte[] decompress(byte[] compressed) { if (compressed == null) return null; ByteArrayOutputStream out = null; ByteArrayInputStream in = null; ZipInputStream zin = null; byte[] decompressed = null; try { out = new ByteArrayOutputStream(); in = new ByteArrayInputStream(compressed); zin = new ZipInputStream(in); ZipEntry entry = zin.getNextEntry(); byte[] buffer = new byte[1024]; int offset = -1; while ((offset = zin.read(buffer)) != -1) { out.write(buffer, 0, offset); } decompressed = out.toByteArray(); } catch (Exception e) { e.printStackTrace(); decompressed = null; } finally { if (zin != null) { try { zin.close(); } catch (IOException e) { } } if (in != null) { try { in.close(); } catch (IOException e) { } } if (out != null) { try { out.close(); } catch (IOException e) { } } } return decompressed; }
说明一下,在对流进行压缩时,如果最后没有将流写入到文件里,而是将流直接吐出,这样生成的文件将不能通过winrar进行解压,只能通过java读流的方式解压。
发表评论
-
JIRA REST API ---- JAVA
2015-09-24 15:51 13416最近在搞自动化监控 ... -
Thrift--JSClient
2013-09-26 14:45 6014thrift提供了基于jquery--ajax的客户端调用 ... -
Thrift--Spring集成ThriftServlet
2013-09-25 11:42 11151Thrift除了可以通过TCP协议访问,还可以通过HTTP ... -
Thrift转SpringHttpInvoker
2013-09-24 13:26 1794关于在spring中集成Thrift请参看:http://h ... -
Thrift--JavaServer&PythonClient遇到的问题
2013-09-23 10:16 1469thrift在java中的应用参考:http://hanqu ... -
Spring集成Thrift--Server AND Client
2013-09-04 20:13 13787Thrift网上有N多教程, ... -
Windows Server 2008 Active Directory 安装及使用笔记
2013-03-22 18:49 26901.安装AD http://www.docin.com/ ... -
C3P0配置实战
2012-09-04 18:34 51929C3P0: 一个开源的JDBC连接池,它实现了数据源和JN ... -
使用Spring3.1 Cache注解+EHCache遇到的问题
2011-10-20 17:48 10404关于Spring3.1 Cache注解的介绍请参看http:/ ... -
java调用Shell脚本
2009-07-10 13:13 2329原文地址:http://hi.baidu.com/qiu115 ... -
JDK5 Annotation(注释)的用法
2009-07-10 13:27 1824原文地址:http://hi.baidu.com/gaoyao ... -
JDK 1.5中的ENUM用法
2009-07-10 13:30 1338原文地址:http://www.cnblogs.com/jac ... -
java反射介绍
2009-07-10 14:31 1134一。课程:检查类 1.获得Class对象 得到 ... -
jdk1.5泛型介绍
2009-07-11 09:42 1134原文地址:http://www.matrix.org.cn/r ... -
中文与acsii码相互转换方法
2009-07-13 17:59 1470在开发时,经常会用到 ... -
巧用系统属性
2009-07-15 11:22 1927我们都曾在项目中使用 ... -
String与InputStream相互转换
2009-07-20 18:48 17571.String to InputStream String ... -
java.util.Date 与java.sql.Date相互转换
2009-07-21 10:57 17331.java.util.Date to java.sql.Da ... -
Java中执行Shell(.sh)和windows批量处理(.bat)
2009-07-21 21:39 1787原文之地:http://blog.csdn.net/Nicol ... -
java验证日期格式
2009-07-24 21:02 1773public static boolean checkDate ...
相关推荐
7-Zip是一款强大的开源压缩工具,特别适合在命令行环境下使用,尤其对于需要通过Java程序进行文件压缩或解压缩操作的场景。它以其高效的压缩比和丰富的格式支持而备受青睐。7-Zip不仅提供图形用户界面,还支持命令行...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。...通过上述知识点,开发者能够有效地在Java环境中进行ZIP文件的压缩与解压缩操作,满足实际项目需求。
Java工具类ZIP解压缩Java工具类ZIP解压缩Java工具类ZIP解压缩
解压缩ZIP文件则可以使用`org.apache.commons.compress.archivers.zip.ZipArchiveInputStream`类。同样,我们需要设置正确的编码来正确读取中文文件名: ```java import org.apache.commons.compress.archivers.zip...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
以下是一个基本的Java代码示例,演示如何解压缩ZIP文件: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void unzip(String zipFilePath, String destDirectory...
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在项目开发过程中,为了节省存储空间或方便传输,我们常需要对文件进行压缩。本项目“Java 项目-java的JAVA文件压缩与解压缩实践.zip”提供了一个实战示例,...
解压缩ZIP文件的过程则使用`ZipInputStream`: ```java import java.io.*; import java.util.zip.*; public class JavaUnzip { public static void main(String[] args) { try { File destinationDirectory = ...
首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
### Java 实现 ZIP 文件压缩与解压缩 #### 知识点概述 在现代软件开发过程中,数据压缩是一项非常重要的技术,特别是在处理大量数据时。Java 作为一种广泛应用的编程语言,提供了丰富的 API 来支持文件的压缩与解...