public class TestZip {
public static String SERPEROT = "/";
public static int BUFFER = 2048;
public static void main(String args[]){
zip("e:/hello/", "e:/hello.zip");
}
public static void zip(String srcFile, String descFile){
ZipOutputStream zos = null;
FileOutputStream fos = null;
File file = null;
try {
fos = new FileOutputStream(descFile);
zos = new ZipOutputStream(fos);
file = new File(srcFile);
String folder = srcFile.substring(srcFile.lastIndexOf("/") +1,srcFile.length());
zip(zos,file,folder);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
try{
if(zos != null){zos.close();}
if(fos != null){fos.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
private static void zip(ZipOutputStream descFile, File srcFile,String srcfolder){
FileInputStream fis = null;
System.out.println(srcFile.isDirectory());
try{
if(srcFile.isDirectory()){
File[] files = srcFile.listFiles();
descFile.putNextEntry(new ZipEntry(srcfolder + "/")); //是压缩包里面的路径.
srcfolder = srcfolder.length() == 0 ? "" : srcfolder + "/";
System.out.println(srcfolder);
for(int i= 0; i<files.length; i++){
zip(descFile,files[i],srcfolder + files[i].getName());
}
}else{
descFile.putNextEntry(new ZipEntry(srcfolder));
fis = new FileInputStream(srcFile);
byte[] bytes = new byte[2048];
int n =0;
while((n = fis.read(bytes)) != -1){
descFile.write(bytes,0,n);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fis != null){fis.close();}
}catch(Exception e){
e.printStackTrace();
}
}
}
}