资源简介
可以解决包含中文文件夹的zip包解压的问题
/**
* 解压缩zipFile
* @param file 要解压的zip文件对象
* @param outputDir 要解压到某个指定的目录下
* @throws IOException
*/
public void unzip(String zipFileName, String outputDir) throws IOException {
try {
BufferedOutputStream bos = null;
// 创建输入字节流
FileInputStream fis = new FileInputStream(zipFileName);
// 根据输入字节流创建输入字符流
BufferedInputStream bis = new BufferedInputStream(fis);
// 根据字符流,创建ZIP文件输入流
ZipInputStream zis = new ZipInputStream(bis);
// zip文件条目,表示zip文件
ZipEntry entry;
// 循环读取文件条目,只要不为空,就进行处理
while ((entry = zis.getNextEntry()) != null) {
int count;
byte date[] = new byte[2048];
// 如果条目是文件目录,则继续执行
if (entry.isDirectory()) {
continue;
} else {
int begin = zipFileName.lastIndexOf("\\") + 1;
int end = zipFileName.lastIndexOf(".") + 1;
String zipRealName = zipFileName.substring(begin, end);
bos = new BufferedOutputStream(new FileOutputStream(this
.getRealFileName(outputDir + "\\" + zipRealName,
entry.getName())));
while ((count = zis.read(date)) != -1) {
bos.write(date, 0, count);
}
bos.flush();
bos.close();
}
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private File getRealFileName(String zippath, String absFileName) {
String[] dirs = absFileName.split("/", absFileName.length());
// 创建文件对象
File file = new File(zippath);
if (dirs.length > 1) {
for (int i = 0; i < dirs.length - 1; i++) {
// 根据file抽象路径和dir路径字符串创建一个新的file对象,路径为文件的上一个目录
file = new File(file, dirs[i]);
}
}
if (!file.exists()) {
file.mkdirs();
}
file = new File(file, dirs[dirs.length - 1]);
return file;
}

代码片段和文件信息
package com.originsys.eap.tools;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class CompresszZipFile {
static final int BUFFER = 2048;
/**
* 读取ZIP文件,只适合于ZIP文件对于RAR文件无效,因为ZIP文件的压缩算法是公开的,而RAR不是
* @author 彭建明
* @version 1.0
* @param zipfilepath:ZIP文件的路径,unzippath:要解压到的文件路径
*/
public void ReadZip(String zipfilepathString unzippath){
try {
BufferedOutputStream bos = null;
//创建输入字节流
FileInputStream fis = new FileInputStream(zipfilepath);
//根据输入字节流创建输入字符流
BufferedInputStream bis = new BufferedInputStream(fis);
//根据字符流,创建ZIP文件输入流
ZipInputStream zis = new ZipInputStream(bis);
//zip文件条目,表示zip文件
ZipEntry entry;
//循环读取文件条目,只要不为空,就进行处理
while((entry=zis.getNextEntry())!=null){
System.out.println(“====“+entry.getName());
int count ;
byte date[] = new byte[BUFFER];
//如果条目是文件目录,则继续执行
if(entry.isDirectory()){
continue;
}else{
int begin = zipfilepath.lastIndexOf(“\\“)+1;
int end = zipfilepath.lastIndexOf(“.“)+1;
String zipRealName = zipfilepath.substring(beginend);
bos = new BufferedOutputStream(new FileOutputStream(this.getRealFileName(unzippath+“\\“+zipRealNameentry.getName())));
while((count=zis.read(date))!=-1){
bos.write(date0count);
}
bos.flush();bos.close();
}
}
zis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private File getRealFileName(String zippathString absFileName){
String[] dirs = absFileName.split(“/“absFileName.length());
//创建文件对象
File file = new File(zippath);
if(dirs.length>1){
for(int i=0;i //根据file抽象路径和dir路径字符串创建一个新的file对象,路径为文件的上一个目录
file = new File(filedirs[i]);
}
}
if(!file.exists()){
file.mkdirs();
}
file = new File(filedirs[dirs.length-1]);
return file;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2351 2010-04-21 11:15 tools\CompresszZipFile.java
文件 12850 2010-04-21 09:10 tools\Deflater.java
文件 4702 2010-04-21 09:10 tools\DeflaterOutputStream.java
文件 8084 2010-04-21 10:02 tools\InflaterInputStream.java
文件 3156 2010-04-21 08:58 tools\ZipConstants.java
文件 9349 2010-04-21 10:07 tools\ZipEntry.java
文件 12115 2010-04-21 10:02 tools\ZipInputStream.java
文件 15718 2010-04-21 09:09 tools\ZipOutputStream.java
目录 0 2010-04-22 13:07 tools
----------- --------- ---------- ----- ----
68325 9
相关资源
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
- java软件工程师简历模板——应届生
- DES(CFB) JAVA
- java读取局域网共享机器文件
- [免费]java学习 存储过程
- pl/0词法分析器和语法分析器(java)
评论
共有 条评论