package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ZipFloder {
private static int i;
public static void main(String args[]) throws IOException {
unpack();
}
private static void unpack() throws IOException {
// TODO Auto-generated method stub
String compress = "nutch-0.9.tar.gz";// zip压缩文件
String decompression = "/f1";// 解压路径
java.io.File dir = new java.io.File(decompression);
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(compress);
java.util.Enumeration enumer = zf.entries();
while (enumer.hasMoreElements()) {
java.util.zip.ZipEntry ze = (java.util.zip.ZipEntry) enumer
.nextElement();
String zename = ze.getName();
zename = new String(zename);// 文件名,不支持中文.
System.out.println(zename);
if (ze.isDirectory()) {
java.io.File file = new java.io.File(dir.getAbsolutePath()
+ "/" + zename);
file.mkdirs();
} else {
java.io.File file = new java.io.File(dir.getAbsolutePath()
+ "/" + zename).getParentFile();
if (!file.exists()) {
file.mkdirs();
}
byte zeby[] = new byte[(int) ze.getSize()];
java.io.InputStream is = zf.getInputStream(ze);
is.read(zeby);
is.close();
java.io.FileOutputStream fos = new java.io.FileOutputStream(dir
.getAbsolutePath()
+ "/" + zename);
fos.write(zeby);
fos.close();
}
}
zf.close();
}
private static void pack() throws IOException {
// TODO Auto-generated method stub
String compress = "/f2";// 要压缩的目录
String decompression = "test.rar";// 压缩路径
java.util.zip.ZipOutputStream zos = new java.util.zip.ZipOutputStream(
new java.io.FileOutputStream(new java.io.File(decompression)));
compress(zos, new File(compress));
zos.close();
System.out.println("the files count: " + i);
}
public static void compress(java.util.zip.ZipOutputStream zos,
java.io.File file) throws java.io.IOException {
if (file.isFile()) {
byte by[] = new byte[(int) file.length()];
java.io.FileInputStream is = new java.io.FileInputStream(file);
is.read(by);
is.close();
java.util.zip.ZipEntry ze = new java.util.zip.ZipEntry(file
.getPath());
zos.putNextEntry(ze);
zos.write(by);
zos.closeEntry();
System.out.println(file.getName());
} else if (file.isDirectory()) {
java.io.File files[] = file.listFiles();
if (files != null)
for (File f : files) {
compress(zos, f);
i++;
}
}
}
}