java实现将多个文件打包成zip
来源:互联网 发布:在淘宝上怎么分期付款 编辑:程序博客网 时间:2024/05/23 19:20
import java.util.List;import java.util.zip.*;import java.io.*;public class ZipCommand { private static int ziplevel = 7; private File sourceFile = null; private File zipFile = null; private ZipOutputStream jos = null; private ZipEntry sourEntry = null; private String zipfileName = null; private String sourceFileName = null; private static byte[] buf = new byte[1024]; public static void main(String[] s){ ZipCommand tz = new ZipCommand(); //System.out.println( tz.AddtoZip("E:/cis-2000/document/CPoPUserSManual_CPoP_User_s_Manual.doc")); } public String AddtoZip(List sourcefilelist){if(sourcefilelist == null || sourcefilelist.size()<1){return null;}sourceFile = new File(sourcefilelist.get(0).toString());if(!sourceFile.isFile()){return null;}else{sourceFileName = sourceFile.getName();this.setZipfileName(sourceFileName.substring(0,sourceFileName.lastIndexOf("."))+".zip"); try{zipFile = new File(sourceFile.getParent(),this.getZipfileName());if(zipFile.exists()){ int i = 1 ; while(true){ zipFile = new File(sourceFile.getParent(),this.getZipfileName().substring(0, getZipfileName().lastIndexOf(".zip")) + i + ".zip"); if(!zipFile.exists()) break ; i++ ; } }//System.out.println(zipFile.getPath()); if(zipFile.exists()){ zipFile.deleteOnExit(); } zipFile.createNewFile(); jos = new ZipOutputStream(new FileOutputStream(zipFile)); jos.setLevel(ziplevel); for(int i=0;i<sourcefilelist.size();i++){ Stzip(jos,new File(sourcefilelist.get(i).toString())); } jos.finish(); }catch(Exception e){ return null; } if(zipFile !=null)return zipFile.getPath(); else{ return null; }}} private void Stzip(ZipOutputStream jos, File file) throws IOException, FileNotFoundException { sourEntry= new ZipEntry(file.getName()); FileInputStream fin = new FileInputStream(file); BufferedInputStream in = new BufferedInputStream(fin); jos.putNextEntry(sourEntry); int len; while ((len = in.read(buf)) >= 0) jos.write(buf, 0, len); in.close(); jos.closeEntry(); } public File getSourceFile() {return sourceFile;}public void setSourceFile(File sourceFile) {this.sourceFile = sourceFile;}public String getZipfileName() {return zipfileName;}public void setZipfileName(String zipfileName) {this.zipfileName = zipfileName;}}