package org.carelife.creader.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.carelife.creader.dao.UrlHelper;
public class ZipUtil {
private static void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true)
fl.mkdir();
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() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void unZip(File zipFileName, String outputDirectory) throws Exception {
try {
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName,"GBK");
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
// System.out.println("unziping " + zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
// System.out.println("����Ŀ¼��" + outputDirectory + File.separator + name);
}
else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
// System.out.println("�����ļ�1��" +fileName);
if (fileName.indexOf("/") != -1)
{
createDirectory(outputDirectory,
fileName.substring(0, fileName.lastIndexOf("/")));
fileName=fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
}
File f = new File(outputDirectory + File.separator + zipEntry.getName());
//�������ļ�
if(!f.createNewFile()){
continue;
}
InputStream in = zipFile.getInputStream(zipEntry);
OutputStream out = new FileOutputStream(f);
DesUtil ds = new DesUtil(UrlHelper.key_string);
ds.encryptFile(in, out);
// 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());
}
}
public static void unZip_init(File zipFileName, String outputDirectory) throws Exception {
try {
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName,"GBK");
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
// System.out.println("unziping " + zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
// System.out.println("����Ŀ¼��" + outputDirectory + File.separator + name);
}
else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
// System.out.println("�����ļ�1��" +fileName);
if (fileName.indexOf("/") != -1)
{
createDirectory(outputDirectory,
fileName.substring(0, fileName.lastIndexOf("/")));
fileName=fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
}
File f = new File(outputDirectory + File.separator + zipEntry.getName());
//�������ļ�
if(!f.createNewFile()){
continue;
}
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out=new FileOutputStream(f);
if(fileName.endsWith("c1.txt")||fileName.endsWith("c2.txt")||fileName.endsWith("c3.txt")){
byte[] by = new byte[1024];
int c;
while ( (c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}else{
DesUtil ds = new DesUtil(UrlHelper.key_string);
ds.encryptFile(in, out);
}
// 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());
}
}
}