java实现zip文件压缩,解压
来源:互联网 发布:杭州淘宝摄影工作室 编辑:程序博客网 时间:2024/05/05 08:43
这几天看了网上一些前辈的代码,自己对Java实现zip文件的解压,压缩有一点理解,故写下留着以后参考。
为了处理中文乱码问题,使用ant.jar包。
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.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 TestZip {
private static int readByte;
private static byte[] buf = new byte[1024];
private static ZipOutputStream zipOut;
private static BufferedInputStream fileIn;
private static BufferedOutputStream fileOut;
private static InputStream in;
private static ZipFile zipFile;
/**
* 遍历数组,调用文件压缩方法,压缩文件
*
* @param list 文件集合
* @param zipName 压缩有的文件名
* @return zipFile 压缩后的文件
* @throws IOException
*/
public static File zip(List<File> list, String zipName) throws IOException {
File zipFile = new File(zipName+".zip");
zipOut = new ZipOutputStream(new BufferedOutputStream(
new FileOutputStream(zipFile)));
//将字符集设定为GBK,支持中文。
zipOut.setEncoding("GBK");
for (File file : list) {
//获取文件的父文件路径,便于递归压缩文件夹。
String path = file.getParent();
utilZip(file, zipOut, path);
}
zipOut.close();
return zipFile;
}
/**
* 通过递归实现文件夹以及文件的压缩
*
* @param fileDir
* @param zipOutput
* @param path 文件的路径
* @throws IOException
*/
public static void utilZip(File fileDir, ZipOutputStream zipOutput,
String path) throws IOException {
//文件为文件夹
if (fileDir.isDirectory()) {
zipOutput.putNextEntry(new ZipEntry(fileDir.getPath().substring(
path.length() + 1)
+ "/"));
zipOut.closeEntry();
for (File file : fileDir.listFiles()) {
//递归调用
utilZip(file, zipOutput, path);
}
} else {
//文件数据传输
fileIn = new BufferedInputStream(new FileInputStream(fileDir));
zipOutput.putNextEntry(new ZipEntry(fileDir.getPath().substring(
path.length())));
while ((readByte = fileIn.read(buf)) > 0) {
zipOutput.write(buf, 0, readByte);
}
//关闭流
fileIn.close();
zipOut.closeEntry();
}
}
/**
* 遍历文件,如果有文件夹,创建文件夹,如果为文件,复制文件。
* @param zipFileName 被解压的文件名
* @return list 解压后的文件集合
* @throws IOException
*/
@SuppressWarnings("unchecked")
public static List<File> unZip(File zipFileName) throws IOException{
List<File> list = new ArrayList<File>();
zipFile = new ZipFile(zipFileName);
Enumeration en = zipFile.getEntries();
//获取被解压文件的父文件路径
String path = zipFileName.getParent();
ZipEntry zipEntry = null;
while(en.hasMoreElements()){
zipEntry = (ZipEntry) en.nextElement();
//文件夹
if(zipEntry.isDirectory()){
//创建文件夹
File file = new File(path+"//"+zipEntry.getName());
file.mkdirs();
}else{
//复制文件
File file = new File(path+"//"+zipEntry.getName());
in =zipFile.getInputStream(zipEntry);
fileOut = new BufferedOutputStream(new FileOutputStream(file));
while((readByte = in.read(buf)) > 0 ){
fileOut.write(buf, 0, readByte);
}
in.close();
fileOut.close();
list.add(file);
}
}
zipFile.close();
return list;
}
}
- java实现zip文件压缩,解压
- java压缩解压ZIP文件
- java实现zip压缩、解压
- java实现Zip文件压缩和解压工程代码
- Java实现文件压缩与解压[zip格式,gzip格式]
- Java实现文件压缩与解压[zip格式,gzip格式]
- Java 实现zip格式的文件压缩与解压
- Java实现文件压缩与解压[zip格式,gzip格式]
- java中zip与gzip实现文件压缩,解压
- Java实现Zip文件的解压和压缩_ZipUtil
- 用java代码实现文件的zip压缩与解压
- Java实现文件压缩与解压[zip格式,gzip格式]
- PHP ZipArchive 实现压缩解压Zip文件
- Java 解压和压缩密码zip文件
- java zip文件的压缩与解压
- 使用java.util.zip压缩、解压文件
- java压缩及解压(.zip)文件文件夹
- Java 压缩,解压zip文件(支持中文)
- 关于Ajax的异步机制
- IT售前如何写解决方案分析
- Stack Adaptor
- Java 中 使用 String.split 分割 字符串 成 字符数组
- 七个受用一生的心理寓言
- java实现zip文件压缩,解压
- iterator
- [转]Linux系统信息查看命令
- 学习心得~~~Invalidate~~UpdateData~~UpdateWindow
- 缓冲区溢出攻击
- 狼与羊
- OpenGL与Direct3D几点不同(坐标系,向量,绕序)
- 二分图匹配算法总结
- tomcat6.X 使用Invoker Servlet