ZIP压缩类
import
java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipCompress ... {
/** *//**
* @param args
*/
public static void main(String[] args) throws IOException ...{
compress("D:/tomcat-5.5.20","d:/test/testZip.zip");
}
/** *//**
* 递归压缩文件
* @param source 源路径,可以是文件,也可以目录
* @param destinct 目标路径,压缩文件名
* @throws IOException
*/
private static void compress(String source,String destinct) throws IOException ...{
List fileList=loadFilename(new File(source));
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(destinct)));
byte[] buffere=new byte[8192];
int length;
BufferedInputStream bis;
for(int i=0;i<fileList.size();i++) ...{
File file=(File) fileList.get(i);
zos.putNextEntry(new ZipEntry(getEntryName(source,file)));
bis=new BufferedInputStream(new FileInputStream(file));
while(true) ...{
length=bis.read(buffere);
if(length==-1) break;
zos.write(buffere,0,length);
}
bis.close();
zos.closeEntry();
}
zos.close();
}
/** *//**
* 递归获得该文件下所有文件名(不包括目录名)
* @param file
* @return
*/
private static List loadFilename(File file) ...{
List filenameList=new ArrayList();
if(file.isFile()) ...{
filenameList.add(file);
}
if(file.isDirectory()) ...{
for(File f:file.listFiles()) ...{
filenameList.addAll(loadFilename(f));
}
}
return filenameList;
}
/** *//**
* 获得zip entry 字符串
* @param base
* @param file
* @return
*/
private static String getEntryName(String base,File file) ...{
File baseFile=new File(base);
String filename=file.getPath();
//int index=filename.lastIndexOf(baseFile.getName());
if(baseFile.getParentFile().getParentFile()==null)
return filename.substring(baseFile.getParent().length());
return filename.substring(baseFile.getParent().length()+1);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipCompress ... {
/** *//**
* @param args
*/
public static void main(String[] args) throws IOException ...{
compress("D:/tomcat-5.5.20","d:/test/testZip.zip");
}
/** *//**
* 递归压缩文件
* @param source 源路径,可以是文件,也可以目录
* @param destinct 目标路径,压缩文件名
* @throws IOException
*/
private static void compress(String source,String destinct) throws IOException ...{
List fileList=loadFilename(new File(source));
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(destinct)));
byte[] buffere=new byte[8192];
int length;
BufferedInputStream bis;
for(int i=0;i<fileList.size();i++) ...{
File file=(File) fileList.get(i);
zos.putNextEntry(new ZipEntry(getEntryName(source,file)));
bis=new BufferedInputStream(new FileInputStream(file));
while(true) ...{
length=bis.read(buffere);
if(length==-1) break;
zos.write(buffere,0,length);
}
bis.close();
zos.closeEntry();
}
zos.close();
}
/** *//**
* 递归获得该文件下所有文件名(不包括目录名)
* @param file
* @return
*/
private static List loadFilename(File file) ...{
List filenameList=new ArrayList();
if(file.isFile()) ...{
filenameList.add(file);
}
if(file.isDirectory()) ...{
for(File f:file.listFiles()) ...{
filenameList.addAll(loadFilename(f));
}
}
return filenameList;
}
/** *//**
* 获得zip entry 字符串
* @param base
* @param file
* @return
*/
private static String getEntryName(String base,File file) ...{
File baseFile=new File(base);
String filename=file.getPath();
//int index=filename.lastIndexOf(baseFile.getName());
if(baseFile.getParentFile().getParentFile()==null)
return filename.substring(baseFile.getParent().length());
return filename.substring(baseFile.getParent().length()+1);
}
}
ZIP解压类
import
java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipDecompression ... {
/** *//**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException ...{
decompression("d:/test/testZip.zip","d:/test/un");
}
/** *//**
* 解压ZIP文件
* @param zipFile 要解压的ZIP文件路径
* @param destination 解压到哪里
* @throws IOException
*/
public static void decompression(String zipFile,String destination) throws IOException ...{
ZipFile zip=new ZipFile(zipFile);
Enumeration en=zip.entries();
ZipEntry entry=null;
byte[] buffer=new byte[8192];
int length=-1;
InputStream input=null;
BufferedOutputStream bos=null;
File file=null;
while(en.hasMoreElements()) ...{
entry=(ZipEntry)en.nextElement();
if(entry.isDirectory()) ...{
System.out.println("directory");
continue;
}
input=zip.getInputStream(entry);
file=new File(destination,entry.getName());
if(!file.getParentFile().exists()) ...{
file.getParentFile().mkdirs();
}
bos=new BufferedOutputStream(new FileOutputStream(file));
while(true) ...{
length=input.read(buffer);
if(length==-1) break;
bos.write(buffer,0,length);
}
bos.close();
input.close();
}
zip.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipDecompression ... {
/** *//**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException ...{
decompression("d:/test/testZip.zip","d:/test/un");
}
/** *//**
* 解压ZIP文件
* @param zipFile 要解压的ZIP文件路径
* @param destination 解压到哪里
* @throws IOException
*/
public static void decompression(String zipFile,String destination) throws IOException ...{
ZipFile zip=new ZipFile(zipFile);
Enumeration en=zip.entries();
ZipEntry entry=null;
byte[] buffer=new byte[8192];
int length=-1;
InputStream input=null;
BufferedOutputStream bos=null;
File file=null;
while(en.hasMoreElements()) ...{
entry=(ZipEntry)en.nextElement();
if(entry.isDirectory()) ...{
System.out.println("directory");
continue;
}
input=zip.getInputStream(entry);
file=new File(destination,entry.getName());
if(!file.getParentFile().exists()) ...{
file.getParentFile().mkdirs();
}
bos=new BufferedOutputStream(new FileOutputStream(file));
while(true) ...{
length=input.read(buffer);
if(length==-1) break;
bos.write(buffer,0,length);
}
bos.close();
input.close();
}
zip.close();
}
}