- 浏览: 58210 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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);
}
}
相关推荐
包含翻译后的API文档:commons-compress-1.21-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.21; 标签:apache、commons、compress、中文文档、jar包、java; 使用方法:...
包含翻译后的API文档:commons-compress-1.19-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.19; 标签:apache、compress、commons、jar包、java、中文文档; 使用方法:...
包含翻译后的API文档:commons-compress-1.20-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.commons:commons-compress:1.20; 标签:apache、commons、compress、中英对照文档、jar包、java...
包含翻译后的API文档:commons-compress-1.20-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.20; 标签:apache、commons、compress、中文文档、jar包、java; 使用方法:...
包含翻译后的API文档:commons-compress-1.4.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.4.1; 标签:apache、compress、commons、jar包、java、中文文档; 使用方法...
里面包括commons-compress-1.9、commons-compress-1.2.1的版本。 当遇到这种错误,应该重点关注Caused by:后面的内容 Caused by:xxx Unsupported major.minor version 52.0。翻译为中文:(Tomcat)不支持52.0版本的...
包含翻译后的API文档:commons-compress-1.8.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.8.1; 标签:apache、commons、compress、中文文档、jar包、java; 使用方法...
包含翻译后的API文档:commons-compress-1.18-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.commons,artifactId:commons-compress,version:1.18 使用方法:解压翻译后的API文档,用...
包含翻译后的API文档:commons-compress-1.16.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.commons:commons-compress:1.16.1; 标签:apache、commons、compress、中英对照文档、jar包、...
commons-compress.jar,包括commons-compress-1.0.jar和commons-compress-1.8.jar两个jar包,等你来拿。
包含翻译后的API文档:commons-compress-1.18-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.apache.commons,artifactId:commons-compress,version:1.18 使用方法:解压翻译后的API...
包含翻译后的API文档:commons-compress-1.21-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.commons:commons-compress:1.21; 标签:apache、commons、compress、中英对照文档、jar包、java...
包含翻译后的API文档:commons-compress-1.8.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.commons:commons-compress:1.8.1; 标签:apache、commons、compress、中英对照文档、jar包、...
没有积分的可以去这个网站下载:http://commons.apache.org/proper/commons-compress/download_compress.cgi
commons-compress-1.18
commons-compress-1.18.jar是一个Java压缩库,专注于数据的压缩和解压缩功能,支持多种常见的压缩格式。它提供了广泛的压缩算法和工具,用于数据存储、传输和优化存储空间。 【使用人群】 适用于Java开发者、数据...
有时候需要在JAVA中解压多种压缩文件,那么就可以使用这个。
包含翻译后的API文档:commons-compress-1.16.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.commons:commons-compress:1.16.1; 标签:apache、commons、compress、中文文档、jar包、java; 使用...
通过java对tar包进行压缩或者解压缩,其中核心类TarArchiveInputStream、TarArchiveOutputStream、TarArchiveEntry
包含翻译后的API文档:commons-compress-1.19-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.commons:commons-compress:1.19; 标签:apache、compress、commons、jar包、java、中英对照文档...