• 文件压缩、解压工具类。文件压缩格式为zip


    package com.JUtils.file;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * 文件压缩、解压工具类。文件压缩格式为zip
     *
     * @Author:chenssy
     * @date:2016年5月24日 下午9:16:01
     */
    public class ZipUitls {
        /** 文件后缀名 */
        private static final String ZIP_FILE_SUFFIX = ".zip";
    
        /**
         * 压缩文件
         *
         * @author:chenssy
         * @date : 2016年5月24日 下午9:56:36
         *
         * @param :resourcePath
         *                         源文件
         * @param :targetPath
         *                         目的文件,保存文件路径
         */
    
        public static void main(String[] args) {
            String fileName = "D:/file/compare.json";
            String file = "D:/file/ZipUitls";
            zipFile(fileName,file);
        }
        public static void zipFile(String resourcePath,String targetPath){
            File resourcesFile = new File(resourcePath);
            File targetFile = new File(targetPath);
    
            //目的文件不存在,则新建
            if(!targetFile.exists()){
                targetFile.mkdirs();
            }
            //文件名
            String targetName = resourcesFile.getName() + ZIP_FILE_SUFFIX;
    
            ZipOutputStream out = null;
            try {
                FileOutputStream outputStream = new FileOutputStream(targetPath+"//"+targetName);
                out = new ZipOutputStream(new BufferedOutputStream(outputStream));
    
                compressedFile(out, resourcesFile, "");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }finally{
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         *
         * @author:chenssy
         * @date : 2016年5月24日 下午10:00:22
         *
         * @param out
         * @param : resourcesFile
         * @param dir
         */
        private static void compressedFile(ZipOutputStream out, File file, String dir) {
            FileInputStream fis = null;
            try {
                if (file.isDirectory()) {    //文件夹
                    // 得到文件列表信息
                    File[] files = file.listFiles();
                    // 将文件夹添加到下一级打包目录
                    out.putNextEntry(new ZipEntry(dir + "/"));
    
                    dir = dir.length() == 0 ? "" : dir + "/";
    
                    // 循环将文件夹中的文件打包
                    for (int i = 0; i < files.length; i++) {
                        compressedFile(out, files[i], dir + files[i].getName()); // 递归处理
                    }
                } else {     //如果是文件则打包处理
                    fis = new FileInputStream(file);
    
                    out.putNextEntry(new ZipEntry(dir));
                    // 进行写操作
                    int j = 0;
                    byte[] buffer = new byte[1024];
                    while ((j = fis.read(buffer)) > 0) {
                        out.write(buffer, 0, j);
                    }
                    // 关闭输入流
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                if(fis != null){
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
  • 相关阅读:
    VC中的头文件stdafx.h的作用
    目标跟踪运动跟踪视觉跟踪综述(转)
    【转载】fatal error C1010: unexpected end of file while looking for precompiled header directive
    Realtime Compressive Tracking 刚出的一个跟踪技术
    研究反对称矩阵性质与应用的原因
    OpenGL在MFC下编程原理 Windows操作系统对OpenGL的支持(转)
    我们是不是菜鸟,可用以下情况自我判断。如果常发生以下事情,可自省已。共勉:
    www5net6com
    自定义的GridView控件源代码
    一直想写一本asp.net教程与实验指导,可是......
  • 原文地址:https://www.cnblogs.com/JonaLin/p/11277900.html
Copyright © 2020-2023  润新知