读书人

java代码兑现文件打包

发布时间: 2012-12-21 12:03:49 作者: rapoo

java代码实现文件打包
网上找了一个文件打包的程序。感觉不错拿来用用^_^

package test;     import java.io.BufferedInputStream;   import java.io.BufferedOutputStream;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.util.zip.ZipEntry;   import java.util.zip.ZipOutputStream;     public class Zip {         /**        * 压缩文件夹        * @param zipPath   生成的zip文件路径        * @param filePath  需要压缩的文件夹路径        * @throws Exception        */      public void zipFolder(String zipPath, String filePath) throws Exception {           ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));           File f = new File(filePath);           zipFiles(out, f, "");           out.close();       }            /**        * 压缩单一个文件        * @param zipPath   生成的zip文件路径        * @param filePath  需要压缩的文件路径        * @throws Exception        */      public void zipFile(String zipPath, String filePath) throws Exception {           File f = new File(filePath);           FileInputStream fis = new FileInputStream(f);           BufferedInputStream bis = new BufferedInputStream(fis);           byte[] buf = new byte[1024];           int len;           FileOutputStream fos = new FileOutputStream(zipPath);           BufferedOutputStream bos = new BufferedOutputStream(fos);           ZipOutputStream zos = new ZipOutputStream(bos);//压缩包           ZipEntry ze = new ZipEntry(f.getName());//这是压缩包名里的文件名           zos.putNextEntry(ze);// 写入新的ZIP文件条目并将流定位到条目数据的开始处             while ((len = bis.read(buf)) != -1) {               zos.write(buf, 0, len);               zos.flush();           }           bis.close();           zos.close();         }              /**        * 递归调用,压缩文件夹和子文件夹的所有文件        * @param out        * @param f        * @param base        * @throws Exception        */      private void zipFiles(ZipOutputStream out, File f, String base) throws Exception {           if (f.isDirectory()) {               File[] fl = f.listFiles();               out.putNextEntry(new ZipEntry(base + "/"));               base = base.length() == 0 ? "" : base + "/";               for (int i = 0; i < fl.length; i++) {                   zipFiles(out, fl[i], base + fl[i].getName());//递归压缩子文件夹               }           } else {               out.putNextEntry(new ZipEntry(base));               FileInputStream in = new FileInputStream(f);               int b;               //System.out.println(base);               while ((b = in.read()) != -1) {                   out.write(b);               }               in.close();           }       }         /**        * @param args        */      public static void main(String[] args) {           System.out.println("Zip File Begin");             Zip zip = new Zip();           String zipPath = "D:\\test.zip";           String filePath = "D:\\test.txt";           try {               zip.zipFile(zipPath, filePath);//压缩文件               //zip.zipFolder(zipPath, filePath);//压缩文件夹           } catch (Exception ex) {               ex.printStackTrace();           }           System.out.println("Zip File Done");       }     }  

读书人网 >编程

热点推荐