资源简介
可以解决包含中文文件夹的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
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- Android代码-多功能拨号盘源码.zip
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 学生请假管理系统.zip
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
评论
共有 条评论