java 自带的文件压缩


public class FileZip {
    /**
     * 压缩多个文件成一个zip文件
     * @param srcfile:源文件列表
     * @param zipfile:压缩后的文件
     */
    public static void zipFiles(File[] srcfile, File zipfile){
        byte[] buf=new byte[1024];
        try {
            //ZipOutputStream类:完成文件或文件夹的压缩
            //不写编码,压缩后有些文件名可能会出现乱码,我当时就是文件名乱码
 ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipfile), Charset.forName("GBK"));
            for(int i=0;i<srcfile.length;i++){
                String filename=srcfile[i].getName();
                FileInputStream in=new FileInputStream(srcfile[i]);
                out.putNextEntry(new ZipEntry(filename));
                int len;
                while((len=in.read(buf))>0){
                    out.write(buf,0,len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
            System.err.println("压缩完成.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 解压缩
     * @param zipfile:需要解压缩的文件
     * @param descDir:解压后的目标目录
     */
    public static void unZipFiles(File zipfile,String descDir){
        try {
            ZipFile zf=new ZipFile(zipfile);
            for(Enumeration entries = zf.entries(); entries.hasMoreElements();){
                ZipEntry entry=(ZipEntry) entries.nextElement();
                String zipEntryName=entry.getName();
                InputStream in=zf.getInputStream(entry);
                OutputStream out=new FileOutputStream(descDir+zipEntryName);
                byte[] buf1=new byte[1024];
                int len;
                while((len=in.read(buf1))>0){
                    out.write(buf1,0,len);
                }
                in.close();
                out.close();
                System.out.println("解压缩完成.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


猜你喜欢

转载自blog.csdn.net/qq_37838223/article/details/80486081