针对一个文件夹压缩成zip文件

来源:互联网 发布:人工智能和机器人 编辑:程序博客网 时间:2024/05/17 03:32
import java.io.File;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream; import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class ZipTool {    /*    * inputFileName 输入一个文件夹    * zipFileName 输出一个压缩文件夹    */    public void zip(String inputFileName,String zipFileName) throws Exception {        System.out.println("正在压缩文件======>"+inputFileName);        File zipDir = new File(zipFileName);        if(!zipDir.getParentFile().exists()){        zipDir.getParentFile().mkdirs();        }        zip(zipFileName, new File(inputFileName));    }    private void zip(String zipFileName, File inputFile) throws Exception {        ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName)));        out.setEncoding("GBK");        zip(out, inputFile, "");        System.out.println("======>生成压缩文件"+zipFileName);        out.close();    }    private void zip(ZipOutputStream out, File f, String base) throws Exception {        if (f.isDirectory()) {           File[] fl = f.listFiles();           if(base != ""){          out.putNextEntry(new ZipEntry(base + "/"));           }           base = base.length() == 0 ? "" : base + "/";           for (int i = 0; i < fl.length; i++) {           zip(out, fl[i], base + fl[i].getName());           }        }else {        if (base == "") {base = f.getName();}           out.putNextEntry(new ZipEntry(base));           FileInputStream in = new FileInputStream(f);           int b;           while ( (b = in.read()) != -1) {           out.write(b);         }         in.close();       }    }    /**     * 引用实例     * @param temp     */    public static void main(String [] temp){        ZipTool book = new ZipTool();        try {           book.zip("D:\\新建文件夹","D:\\22.zip");//你要压缩的文件夹        }catch (Exception ex) {           ex.printStackTrace();       }    }}

0 0