/**
*
*/
package com.sincere.utils.timer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
/**
* @author Administrator
*
*/
public class ZIPTest {
/**
*
*/
public ZIPTest() {
// TODO Auto-generated constructor stub
}
/**
* 解压缩
* @param zipFilePath zip文件路径
* @param releasePath 解压后保存路径
* @throws IOException
*/
public static void decompressFile(String zipFilePath, String releasePath)
throws IOException {
ZipFile zipFile = new ZipFile(zipFilePath);
Enumeration<ZipEntry> enumeration = zipFile.getEntries();
InputStream inputStream = null;
FileOutputStream fileOutputStream = null;
ZipEntry zipEntry = null;
String zipEntryNameStr = "";
String[] zipEntryNameArray = null;
while (enumeration.hasMoreElements()) {
zipEntry = enumeration.nextElement();
zipEntryNameStr = zipEntry.getName();
zipEntryNameArray = zipEntryNameStr.split("/");
String path = releasePath;
File root = new File(releasePath);
if (!root.exists()) {
root.mkdir();
}
for (int i = 0; i < zipEntryNameArray.length; i++) {
if (i < zipEntryNameArray.length - 1) {
//创建目录
path = path + File.separator + zipEntryNameArray[i];
new File(path).mkdir();
} else {
if (zipEntryNameStr.endsWith(File.separator)) {
//创建目录
new File(releasePath + zipEntryNameStr).mkdir();
} else {
inputStream = zipFile.getInputStream(zipEntry);
fileOutputStream = new FileOutputStream(new File(releasePath+ zipEntryNameStr));
byte[] buf = new byte[1024];
int len;
while ((len = inputStream.read(buf)) > 0) {
fileOutputStream.write(buf, 0, len);
}
inputStream.close();
fileOutputStream.close();
}
}
}
}
zipFile.close();
}
/**
* 压缩
*/
public void ys() {
try {
File rFile = new File("C:\\root\\2008\\财务部\\财务部\\");
if (!rFile.exists()) {
return;
}
//判断是否是一个目录
if (!rFile.isDirectory()) {
return;
}
/**打开Zip文件输出流*/
org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(
new FileOutputStream("c://" + System.currentTimeMillis()
+ ".zip"));
out.setComment("sssssssssss");
File[] files = rFile.listFiles();
if (files == null) {
return;
}
byte[] buf = new byte[1024];
for (int i = 0; i < files.length; i++) {
if (files[i] == null)
continue;
/**定义输出流*/
FileInputStream in = new FileInputStream(files[i]);
/**添加文件到压缩包*/
out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i]
.getName()));
/**写文件*/
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
/**关闭文件流*/
out.closeEntry();
in.close();
}
out.close();
} catch (Exception e) {
System.out.println("发生异常:");
e.printStackTrace();
}
}
/**
* 解压
*/
public void jy() {
try {
this.decompressFile("c:\\1217916021656.zip", "c:\\root\\");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
long bTime = System.currentTimeMillis();
ZIPTest ZIPTest = new ZIPTest();
//ZIPTest.ys();
ZIPTest.jy();
System.out.println("测试用时:" + (System.currentTimeMillis() - bTime));
}
}
评论7