JAVA 解_ZIP
来源:互联网 发布:期货交易软件分析决策 编辑:程序博客网 时间:2024/05/05 01:00
/*
提供zip文件的解压缩接口:
AdapterZipFile:
输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径)
输出:
说明:初始化函数
unZipFile:
输入:无
输出:
说明:解压缩zip文件,解压缩后存放到outputDirectory路径下
GetZipFileList:
输入:无
输出:list
说明:解压缩后的文件列表绝对路径存放在ArrayList动态数组中
*/
package com.mop.pushmail.adapter.htmlziprar;
import java.io.*;
import java.util.*;
import org.apache.tools.zip.*;
public class AdapterZipFile {
String zipFileName = null;//zip文件的绝对路径
String outputDirectory = null;//zip文件解压缩后的存放路径
ArrayList list = new ArrayList();//文件解压缩后的文件列表绝对路径
// public AdapterZipFile(String zipFileName) {
// if(zipFileName == null){
// return;
// }
// this.zipFileName = zipFileName.replace("/","//");
// unZipFile();
// }
//初始化
public AdapterZipFile(String zipFileName, String outputDirectory){
if(zipFileName == null){
return;
}
this.zipFileName = zipFileName;
if(outputDirectory != null){
this.outputDirectory = outputDirectory;
}else{
this.outputDirectory = zipFileName.substring(0,
zipFileName.replace('//', '/').lastIndexOf("/"));
}
// unZipFile();
}
//创建目录
private void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true)
fl.mkdirs();
else if (subDirectory != "") {
dir = subDirectory.replace("//","/").split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (!subFile.exists())
subFile.mkdir();
directory += File.separator + dir[i];
}
}
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
//解压缩文件
//如果outputDierctory为null,解压到zipFileName文件的当前目录下
public void unZipFile() {
File file = new File(zipFileName);
if (!file.exists()) {
return;
}
createDirectory(outputDirectory, "");
try {
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('//', '/');
//文件在多层目录下 这时需要创建目录如:d1/d2/1.txt
if (fileName.indexOf("/") != -1) {
createDirectory(outputDirectory, fileName.substring(0,
fileName.lastIndexOf("/")));
fileName = fileName.substring(
fileName.lastIndexOf("/") + 1, fileName
.length());
}
list.add(outputDirectory + File.separator
+ zipEntry.getName());
File f = new File(outputDirectory + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
//返回zip文件解压撒后文件列表的绝对路径
public ArrayList GetZipFileList(){
return list;
}
}
- JAVA 解_ZIP
- 批量下载_Zip压缩包的方式
- Linux_Linux命令_zip/unzip_压缩/解压缩 详解
- mysql安装(Win)_zip免安装方式
- PHP5下单独编译php模块 _zip、imap、cURL为例
- [java]java.lang.OutOfMemoryError总解
- JAVA--java.io.InvalidClassException急解
- java解rar压缩
- java多线程精解
- java路径祥解
- JAVA解与压缩
- Java数据类型精解
- JAVA环境变量全解
- Java数据类型精解
- 解Pell方程(java)
- java加密与解
- Java异常趣解
- Java异常趣解
- LoadRunner安装及快速使用
- 第一篇BLOG
- 深入浅出MS06-040
- ISBN(国__准_号)的校_
- 让管理员的帐号无须密码登陆
- JAVA 解_ZIP
- Java日期格式化及其使用例子
- jdbc_接sql server
- 解說 NTcmd 的工作方式
- MD5和一个可逆加密算法相接合的加密和解密程序
- UDP程序测试
- txt转xml
- 操作属性文件
- 判断一个字符串是不是数字组成