package com.norteksoft.mms.base;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import com.norteksoft.product.util.zip.ZipEntry;
import com.norteksoft.product.util.zip.ZipFile;
import com.norteksoft.product.util.zip.ZipOutputStream;
/**
* 请更换为 com.norteksoft.product.util.ZipUtils
*/
@Deprecated
public class ZipUtil {
/**
* 压缩文件入口
* @param zipFileName
* @param inputFileName
* @throws Exception
*/
public static void zipFile(String zipFileName, String inputFileName)
throws Exception {
ZipOutputStream out = new ZipOutputStream(
new FileOutputStream(zipFileName));
out.setEncoding("utf-8");
File inputFile = new File(inputFileName);
zipIt(out, inputFile, "", true);
out.close();
}
/*
* 能支持中文的压缩 参数base 开始为"" first 开始为true
*/
public static void zipIt(ZipOutputStream out, File file,
String base, boolean first) throws Exception {
if (file.isDirectory()) {
File[] fiels = file.listFiles();
if (first) {
first = false;
} else {
base = base + "/";
}
for (int i = 0; i < fiels.length; i++) {
zipIt(out, fiels[i], base + fiels[i].getName(), first);
}
} else {
if (first) {
base = file.getName();
}
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(file);
int b;
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
public static String unZipFile(String unZipFileName, String unZipPath)
throws Exception {
ZipFile zipFile = new ZipFile(
unZipFileName,prexEncoding(unZipFileName));
unZipFileByOpache(zipFile, unZipPath);
return unZipPath;
}
/*
* 解压文件 unZip为解压路径
*/
@SuppressWarnings("unchecked")
public static void unZipFileByOpache(ZipFile zipFile,
String unZipRoot) throws Exception, IOException {
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry;
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
if (zipEntry.isDirectory()) {
} else {
InputStream fis = zipFile.getInputStream(zipEntry);
File file = new File(unZipRoot + File.separator
+ zipEntry.getName());
File parentFile = file.getParentFile();
parentFile.mkdirs();
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int len;
while ((len = fis.read(b, 0, b.length)) != -1) {
fos.write(b, 0, len);
}
fos.close();
fis.close();
}
}
zipFile.close();
}
/**
* 解析文件编码格试
* @param fileName
* @return
*/
public static String prexEncoding(String fileName){//d:/1.txt
java.io.File f=new java.io.File(fileName);
try{
java.io.InputStream ios=new java.io.FileInputStream(f);
byte[] b=new byte[3];
ios.read(b);
ios.close();
if(b[0]==-17&&b[1]==-69&&b[2]==-65)
return "utf-8";
else
return "GBK";
}catch(Exception e){
e.printStackTrace();
}
return "utf-8";
}
/**
* 解析文件夹
*/
public static void prexFolder(File dir){//d:/1.txt
File[] files =dir.listFiles();
if(files.length != 0){
for (File file : files) {
if(file.isDirectory()){
System.out.println(file.getName());
prexFolder(file);
}else{
System.out.println(file.getName());
}
}
}
}
public static void main(String[] args) throws Exception {
zipFile("d:/temp/folders.zip", "D:/temp/folders");//压缩入口
unZipFile("d:/测试.zip","e:/a/");//解压入口
prexFolder(new File("e:/a"));
}
}