zoukankan      html  css  js  c++  java
  • FileToZip 文件压缩工具类

    public class FileToZip {

    /**
     * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下
     * @param sourceFilePath :待压缩的文件路径
     * @param zipFilePath :压缩后存放路径
     * @param fileName :压缩后文件的名称
     * @return
     */
    public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName){
          boolean flag = false;
          File sourceFile = new File(sourceFilePath);
          FileInputStream fis = null;
          BufferedInputStream bis = null;
          FileOutputStream fos = null;
          ZipOutputStream zos = null;
          
          if(sourceFile.exists() == false){
               System.out.println("待压缩的文件目录:"+sourceFilePath+"不存在.");
          }else{
               try {
                    File zipFile = new File(zipFilePath + "/" + fileName +".zip");
                    if(zipFile.exists()){
                          System.out.println(zipFilePath + "目录下存在名字为:" + fileName +".zip" +"打包文件.");
                    }else{
                          File[] sourceFiles = sourceFile.listFiles();
                          if(null == sourceFiles || sourceFiles.length<1){
                               System.out.println("待压缩的文件目录:" + sourceFilePath + "里面不存在文件,无需压缩.");
                          }else{
                               fos = new FileOutputStream(zipFile);
                               zos = new ZipOutputStream(new BufferedOutputStream(fos));
                               byte[] bufs = new byte[1024*10];
                               for(int i=0;i<sourceFiles.length;i++){
                                    //创建ZIP实体,并添加进压缩包
                                    ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
                                    zos.putNextEntry(zipEntry);
                                    //读取待压缩的文件并写进压缩包里
                                    fis = new FileInputStream(sourceFiles[i]);
                                    bis = new BufferedInputStream(fis, 1024*10);
                                    int read = 0;
                                    while((read=bis.read(bufs, 0, 1024*10)) != -1){
                                         zos.write(bufs,0,read);
                                    }
                               }
                               flag = true;
                          }
                    }
               } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
               } catch (IOException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
               } finally{
                    //关闭流
                    try {
                          if(null != bis) bis.close();
                          if(null != zos) zos.close();
                    } catch (IOException e) {
                          e.printStackTrace();
                          throw new RuntimeException(e);
                    }
               }
          }
          return flag;
    }
    
    public static void main(String[] args){
          String sourceFilePath = "D:\test\202010";
          String zipFilePath = "D:\test\202010";
          String fileName = "打包测试";
          boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName);
          if(flag){
               System.out.println("文件打包成功!");
          }else{
               System.out.println("文件打包失败!");
          }
    }
    

    }

  • 相关阅读:
    阻止事件传播的常用方法
    原生JS获取元素的位置与尺寸
    FileReader 与canvas结合使用显示图片
    dot.js使用心得
    时间格式转换
    JS对象操作
    vue-awesome-swipe 基于vue使用的轮播组件 使用(改)
    vscode 插件推荐
    chrome 发送请求出现:Provisional headers are shown 提示
    手机端
  • 原文地址:https://www.cnblogs.com/jianzhixuan/p/13878798.html
Copyright © 2011-2022 走看看