packagetmp.MavenTest;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.Date;importjava.util.List;importjava.util.logging.Logger;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;//定时将指定文件夹下的所有文件压缩
public classZipFilesUtil {public static voidcompress(File f, String baseDir, ZipOutputStream zos){if(!f.exists()){
System.out.println("待压缩的文件目录或文件"+f.getName()+"不存在");return;
}
File[] fs=f.listFiles();
BufferedInputStream bis= null;//ZipOutputStream zos = null;
byte[] bufs = new byte[1024*10];
FileInputStream fis= null;try{//zos = new ZipOutputStream(new FileOutputStream(zipFile));
for(int i=0; i
String fName=fs[i].getName();
System.out.println("压缩:" + baseDir+fName);if(fs[i].isFile()){
ZipEntry zipEntry= new ZipEntry(baseDir+fName);//zos.putNextEntry(zipEntry);//读取待压缩的文件并写进压缩包里
fis = newFileInputStream(fs[i]);
bis= new BufferedInputStream(fis, 1024*10);int read = 0;while((read=bis.read(bufs, 0, 1024*10))!=-1){
zos.write(bufs,0, read);
}//如果需要删除源文件,则需要执行下面2句//fis.close();//fs[i].delete();
}else if(fs[i].isDirectory()){
compress(fs[i], baseDir+fName+"/", zos);
}
}//end for
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{//关闭流
try{if(null!=bis)
bis.close();//if(null!=zos)//zos.close();
if(null!=fis)
fis.close();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}public static void main( String[] args ) throwsParseException
{
String sourceFilePath= "D:\\Eclipse_XJ\\work_space\\WebProbe\\downloadfiles";
File sourceDir= newFile(sourceFilePath);
File zipFile= new File(sourceFilePath+".zip");
ZipOutputStream zos= null;try{
zos= new ZipOutputStream(newFileOutputStream(zipFile));
String baseDir= "downloadfiles/";
compress(sourceDir, baseDir, zos);
}catch(FileNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}finally{if(zos!=null)try{
zos.close();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
转载:https://blog.csdn.net/u010366748/article/details/78615004