- 浏览: 60370 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (50)
- 心情日志 (2)
- WebLogic (0)
- WebSphere (0)
- Sturts (0)
- Hibernate (0)
- Tomcat (0)
- J2ME (0)
- J2EE (0)
- JDBC (0)
- Oracle (1)
- 原创技术 (1)
- WebService (0)
- EJB (0)
- JPDL (0)
- Cassandra (0)
- Servlet (1)
- Jetty (1)
- 心情杂感 (0)
- Java (7)
- Mina (1)
- Kittle (0)
- Apache (1)
- Mobl (0)
- Html5 (0)
- MongoDB (4)
- OsCahe (0)
- MemCache (1)
- F5 (0)
- ActionMQ (3)
- EBS (0)
- 企业应用集成 (0)
- 财务软件 (0)
- CRM (0)
- KahaDB (0)
- EAI (0)
- 架构设计 (2)
- C++ (0)
- C (0)
- ApacheCommon (0)
- Flex (0)
- ActionScript (0)
- JqueryMobile (0)
- NIO (0)
- Hadoop (0)
- ZooKeeper (2)
- 分布式应用 (0)
- Guzz (0)
- DataBus-数据总线 (0)
- FlexAir (0)
- JavaTV (0)
- JavaFx (0)
- Lucene (3)
- Nginx (0)
- Linux (4)
- Rsync (0)
- FreeMarker (0)
- FireBird (0)
- MySQL (0)
- 项目目录 (0)
- Node.JS (0)
- Comeressor (0)
- 我关注的博客 (0)
- Hbase (2)
- Hive (1)
- Ehcache (0)
- Redis (2)
- Tair (0)
- XSocket (2)
- Tokyo Cabinet (3)
- OsCache (0)
- BoneCP (1)
- C3P0 (0)
- Apache Common (1)
- JQuery (1)
- SVN (1)
- 系统架构 (2)
- Berkeley DB (1)
最新评论
-
heping9574:
你这都什么啊,直接通过翻译软件翻译过来就能网上IBlockin ...
xSocket 教程
Apache Commons Compress是一个压缩、解压缩文件的类库。
可以操作ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2格式的文件,功能比较强大。
在这里写两个用Commons Compress把文件压缩成zip和从zip解压缩的方法。
直接贴上工具类代码:
package rockecsn.jaker;
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 org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.zip.Zip64Mode;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
/**
* Zip文件工具类
* @author jaker
*/
public class ZipFileUtil {
/**
* 把文件压缩成zip格式
* @param files 需要压缩的文件
* @param zipFilePath 压缩后的zip文件路径 ,如"D:/test/aa.zip";
*/
public static void compressFiles2Zip(File[] files,String zipFilePath) {
if(files != null && files.length >0) {
if(isEndsWithZip(zipFilePath)) {
ZipArchiveOutputStream zaos = null;
try {
File zipFile = new File(zipFilePath);
zaos = new ZipArchiveOutputStream(zipFile);
//Use Zip64 extensions for all entries where they are required
zaos.setUseZip64(Zip64Mode.AsNeeded);
//将每个文件用ZipArchiveEntry封装
//再用ZipArchiveOutputStream写到压缩文件中
for(File file : files) {
if(file != null) {
ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(file,file.getName());
zaos.putArchiveEntry(zipArchiveEntry);
InputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024 * 5];
int len = -1;
while((len = is.read(buffer)) != -1) {
//把缓冲区的字节写入到ZipArchiveEntry
zaos.write(buffer, 0, len);
}
//Writes all necessary data for this entry.
zaos.closeArchiveEntry();
}catch(Exception e) {
throw new RuntimeException(e);
}finally {
if(is != null)
is.close();
}
}
}
zaos.finish();
}catch(Exception e){
throw new RuntimeException(e);
}finally {
try {
if(zaos != null) {
zaos.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
/**
* 把zip文件解压到指定的文件夹
* @param zipFilePath zip文件路径, 如 "D:/test/aa.zip"
* @param saveFileDir 解压后的文件存放路径, 如"D:/test/"
*/
public static void decompressZip(String zipFilePath,String saveFileDir) {
if(isEndsWithZip(zipFilePath)) {
File file = new File(zipFilePath);
if(file.exists()) {
InputStream is = null;
//can read Zip archives
ZipArchiveInputStream zais = null;
try {
is = new FileInputStream(file);
zais = new ZipArchiveInputStream(is);
ArchiveEntry archiveEntry = null;
//把zip包中的每个文件读取出来
//然后把文件写到指定的文件夹
while((archiveEntry = zais.getNextEntry()) != null) {
//获取文件名
String entryFileName = archiveEntry.getName();
//构造解压出来的文件存放路径
String entryFilePath = saveFileDir + entryFileName;
byte[] content = new byte[(int) archiveEntry.getSize()];
zais.read(content);
OutputStream os = null;
try {
//把解压出来的文件写到指定路径
File entryFile = new File(entryFilePath);
os = new BufferedOutputStream(new FileOutputStream(entryFile));
os.write(content);
}catch(IOException e) {
throw new IOException(e);
}finally {
if(os != null) {
os.flush();
os.close();
}
}
}
}catch(Exception e) {
throw new RuntimeException(e);
}finally {
try {
if(zais != null) {
zais.close();
}
if(is != null) {
is.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
/**
* 判断文件名是否以.zip为后缀
* @param fileName 需要判断的文件名
* @return 是zip文件返回true,否则返回false
*/
public static boolean isEndsWithZip(String fileName) {
boolean flag = false;
if(fileName != null && !"".equals(fileName.trim())) {
if(fileName.endsWith(".ZIP")||fileName.endsWith(".zip")){
flag = true;
}
}
return flag;
}
}
再来测试一下:
package rockecsn.jaker;
import java.io.File;
import org.junit.Test;
import cn.luxh.utils.ZipFileUtil;
/**
* 测试ZipFileUtil的压缩和解压缩方法
* @author jaker
*/
public class ZipFileUtilTest {
@Test
public void testCompressFiles2Zip() {
//存放待压缩文件的目录
File srcFile = new File("D:/test");
//压缩后的zip文件路径
String zipFilePath = "d:/test2/test.zip";
if(srcFile.exists()) {
File[] files = srcFile.listFiles();
ZipFileUtil.compressFiles2Zip(files, zipFilePath);
}
}
@Test
public void testDecompressZip() {
//压缩包所在路径
String zipFilePath = "d:/test2/test.zip";
//解压后的文件存放目录
String saveFileDir = "d:/test2/";
//调用解压方法
ZipFileUtil.decompressZip(zipFilePath, saveFileDir);
}
}
相关推荐
Apache Commons Compress库支持多种压缩和归档格式,如7z、AR、ARJ、BZip2、CPIO、DEFLATE、Gzip、LZMA、Pack200、RAR、SNappy、TAR、XZ、Z和ZIP等。这些格式广泛应用于数据存储、备份和传输。通过使用这个库,...
以下是使用Apache Commons Compress进行压缩和解压缩的基本步骤: **压缩文件示例**: ```java import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers...
同时,Apache Commons Compress 还提供了与 Java 原生 IO 流的无缝集成,使得开发者可以轻松地将压缩操作集成到现有的数据处理流程中。 使用 Commons Compress 进行文件压缩和解压缩的基本步骤如下: 1. 引入库:...
这个库为开发者提供了简单易用的API,可以方便地进行tar包的压缩和解压缩操作。在本文中,我们将深入探讨`TarArchiveInputStream`、`TarArchiveOutputStream`和`TarArchiveEntry`这三个核心类的功能和使用方法。 ...
3. 文件备份与恢复:在文件备份过程中,使用压缩功能可有效减小备份文件的大小,加快备份速度。 【其他说明】 1. 压缩格式支持:commons-compress-1.18.jar支持多种常见的压缩格式,如ZIP、GZIP、BZIP2等,适应不同...
Commons Compress不仅提供基本的压缩和解压缩功能,还支持一些高级特性,如处理自解压文件(如Windows的自解压RAR文件),以及处理某些格式的特定属性,例如ZIP文件的密码保护或TAR文件的长路径名。 5. **与其他库...
这在资源有限的Android设备上尤为重要,能够确保压缩和解压缩操作的流畅进行。 6. 安全性:库也考虑了安全性方面,比如防止路径遍历攻击,即通过构造恶意文件名来访问系统中的敏感文件。开发者在使用库时应遵循最佳...
commons-compress不仅支持基本的ZIP操作,还支持ZIP64(处理大文件)和一些扩展特性。 这个库的使用非常简单,只需导入相应的依赖,就可以方便地处理各种压缩格式,极大地简化了Java开发者的工作。它提供了一致的...
在“commons-compress的一些应用”中,我们可以探讨如何利用这个库进行文件压缩和解压操作,以及其在实际项目中的应用。 首先,让我们从`TestCompress.java`这个文件名称推测,这可能是一个测试类,用于演示如何...
这个压缩包“基于Java的实例源码-文件压缩解压缩包 Commons Compress.zip”包含了一些使用Apache Commons Compress库进行文件压缩和解压缩操作的示例代码。 Apache Commons Compress库支持多种压缩格式,如7z、AR、...
以下是一个简单的使用Common Compress压缩和解压缩文件的例子: ```java import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream; import org.apache.commons.compress.compressors....
现在我们详细探讨一下Apache Commons Compress库以及如何使用它进行文件的压缩和解压缩操作。 首先,Apache Commons Compress库的核心在于其提供了多种压缩算法的抽象,使得开发者可以方便地处理各种格式的压缩文件...
在本文中,我们将深入探讨如何使用Apache Commons Compress进行文件的压缩和解压缩。 首先,要使用Commons Compress库,我们需要将其添加到项目的依赖管理中。如果你的项目是Maven项目,可以在pom.xml文件中添加...
3. **文件和目录操作**:Apache Commons Compress不仅支持单个文件的压缩和解压缩,还可以处理整个目录。例如,通过`TarArchiveEntry`和`TarArchiveOutputStream`,可以将目录及其所有内容打包成一个TAR文件。 4. *...
在Java编程中,处理文件的压缩和解压缩操作通常是必要的,尤其是在大数据传输、存储优化和应用程序资源打包等方面。Apache Commons Compress库简化了这些任务,因为它提供了一个统一的API,开发者可以通过这个API来...
`commons-compress-1.18.jar`是该库的一个版本,包含了许多方便的API,可以帮助简化压缩和解压缩操作。例如,使用`Apache Commons Compress`库创建`zip`文件: ```java import org.apache.commons.compress....
总结来说,Java中使用Apache Commons Compress库进行ZIP文件操作,不仅提供了更丰富的功能,如设置字符编码,还能有效处理中文等非ASCII字符,保证了在处理多语言环境下的文件时不会出现乱码问题。通过上述方法,...
"compress"目录下的"binaries"可能包含了用于压缩和解压缩操作的二进制文件,这些文件可能包含Java类库(.jar文件)和其他必要的资源,使得Ant能够执行文件的打包和解压操作。 在实际开发中,利用Ant Compress模块...