小編給大家分享一下java如何實(shí)現(xiàn)多個(gè)文件壓縮成壓縮包,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
具體內(nèi)容如下
需要用到的ant.jar
package util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; public class ZipTools { public static final String ZIP_FILENAME = ""; //需要解壓縮的文件名 public static final String ZIP_DIR = ""; //需要壓縮的文件夾 public static final String UN_ZIP_DIR = ""; //要解壓的文件目錄 public static final int BUFFER = 1024 ; //緩存大小 public static void zipFile(String baseDir,String fileName) throws Exception{ List fileList=getSubFiles(new File(baseDir)); ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fileName)); ZipEntry ze=null; byte[] buf=new byte[BUFFER]; int readLen=0; for(int i = 0; i <fileList.size(); i++) { File f=(File)fileList.get(i); ze=new ZipEntry(getAbsFileName(baseDir, f)); ze.setSize(f.length()); ze.setTime(f.lastModified()); zos.putNextEntry(ze); InputStream is=new BufferedInputStream(new FileInputStream(f)); while ((readLen=is.read(buf, 0, BUFFER))!=-1) { zos.write(buf, 0, readLen); } is.close(); } zos.close(); } private static String getAbsFileName(String baseDir, File realFileName){ File real=realFileName; File base=new File(baseDir); String ret=real.getName(); while (true) { real=real.getParentFile(); if(real==null) break; if(real.equals(base)) break; else ret=real.getName()+"/"+ret; } return ret; } private static List getSubFiles(File baseDir){ List ret=new ArrayList(); File[] tmp=baseDir.listFiles(); for (int i = 0; i <tmp.length; i++) { if(tmp[i].isFile()) ret.add(tmp[i]); if(tmp[i].isDirectory()) ret.addAll(getSubFiles(tmp[i])); } return ret; } public static void upZipFile() throws Exception{ ZipFile zfile=new ZipFile(ZIP_FILENAME); Enumeration zList=zfile.entries(); ZipEntry ze=null; byte[] buf=new byte[1024]; while(zList.hasMoreElements()){ ze=(ZipEntry)zList.nextElement(); if(ze.isDirectory()){ File f=new File(ZIP_DIR+ze.getName()); f.mkdir(); continue; } OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(ZIP_DIR, ze.getName()))); InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); int readLen=0; while ((readLen=is.read(buf, 0, 1024))!=-1) { os.write(buf, 0, readLen); } is.close(); os.close(); } zfile.close(); } public static File getRealFileName(String baseDir, String absFileName){ String[] dirs=absFileName.split("/"); File ret=new File(baseDir); if(dirs.length>1){ for (int i = 0; i < dirs.length-1;i++) { ret=new File(ret, dirs[i]); } if(!ret.exists()) ret.mkdirs(); ret=new File(ret, dirs[dirs.length-1]); return ret; } return ret; } public static void deleteDirFile(String path){ File file=new File(path); if(file.isDirectory()){ //如果是目錄,先遞歸刪除 String[] list=file.list(); for(int i=0;i<list.length;i++){ deleteDirFile(path+"\\"+list[i]); //先刪除目錄下的文件 } } file.delete(); } public static String newFolder(String dir){ java.io.File myFilePath=new java.io.File(dir); if(myFilePath.isDirectory()){}else{ myFilePath.mkdirs(); } return dir; } public static String getFileNames(String path){ File file = new File(path); // get file list where the path has File[] array = file.listFiles(); // 獲得文件列表 String pdfNames=""; for(int i=0;i<array.length;i++){ if(array[i].isFile()){ if(array[i].getName().endsWith(".pdf")){ //獲得pdf文件名稱(chēng) pdfNames+=array[i].getName().substring(0,array[i].getName().length()-4)+","; } } } if(pdfNames.length()>0){ pdfNames.substring(0,pdfNames.length()-1); } return pdfNames; } public static void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); if (oldfile.exists()) { //文件存在時(shí) InputStream inStream = new FileInputStream(oldPath); //讀入原文件 FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; while ( (byteread = inStream.read(buffer)) != -1) { bytesum += byteread; //字節(jié)數(shù)文件大小 fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("copy file error!"); e.printStackTrace(); } } public static boolean fileExist(String fileNames,String pdfName){ boolean flag=false; if(!"".equals(fileNames)){ String[] nameArr=fileNames.split(","); for(int i=0;i<nameArr.length;i++){ if(pdfName.equals(nameArr[i])){ //如果文件名相同則執(zhí)行拷貝操作(拷貝到zip目錄準(zhǔn)備打包) flag=true; break; } } } return flag; } public static void deleteFileAndDir(String path){ File file = new File(path); File[] array = file.listFiles(); for(int i=0;i<array.length;i++){ if(array[i].isFile()){ array[i].delete(); }else if(array[i].isDirectory()){ deleteDirFile(array[i].getPath()); } } } }
看完了這篇文章,相信你對(duì)“java如何實(shí)現(xiàn)多個(gè)文件壓縮成壓縮包”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站欄目:java如何實(shí)現(xiàn)多個(gè)文件壓縮成壓縮包-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article6/gpiig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)、服務(wù)器托管、用戶(hù)體驗(yàn)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容