资源简介
可以解决包含中文文件夹的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
相关资源
- java上传图片到aws s3
- 自己写的java人机五子棋源码
- 简单的斗兽棋游戏java下实现
- jsp+servlet+javabean实现简易留言板包含数
- java web聊天系统
- java实现opc服务客户端代码
- 毕业设计 基于java的电子病历系统
- java实现图片bmp转换压缩为jpg
- java防疫期社区人员信息动态管理系统
- 财务管理系统(JSP+Servlet+JavaBean)
- javaWeb上传代码普通上传和ajax后台上传
- 北大青鸟java第一单元项目迷你TXT小说
- 汉诺塔 迷宫用java实现,并且拥有可视
- JAVA 转C++工具
- 超市管理系统(Swing)
- java 内部排序算法的性能分析
- java web 简单留言板
- Eclipsejsp+MySQL 汽车销售信息管理系统
- (java源代码+详细注释)大富翁
- 管系统仿真与GPSSJAVA
- mysql-connector-java-5.1.6.zip
- 哲学家就餐:Java多线程图形版+java_
- 粗糙集属性约简java实现代码
- 消息中间件 RocketMQ 发布和订阅 Demo
- java解哲学家就餐问题
- javaidlb.jar
- 2016底 至 2017-01的最新整理达内Java视频
- Java心理测试小程序
- 仿百度搜索功能附带数据库 java+jsp
- 麻将游戏Java源码
评论
共有 条评论