java写的将文件或文件夹打包成zip的工具类

来源:互联网 发布:mac关机快捷键是什么 编辑:程序博客网 时间:2024/05/18 22:54

一、概要

由于笔者在开发中会涉及到对文件和文件夹的打包操作,所有自己写了一个工具类用于打包文件

二、老规矩,直接上源码

import java.io.BufferedInputStream;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;public final class FileToZip {      private 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+"不存在.");              sourceFile.mkdir(); // 新建目录        }          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;      } }

三、调用示例

//文件对象File file = new File();//也可以是文件夹路径//待生成的zip包名String zipName = new Date().getTime()+GetRandom.getRandomInteger(6);//待生成的zip保存路径String zipFilePath = "../xx/xx";//压缩FileToZip.fileToZip(file , zipFilePath , zipName);
阅读全文
0 0
原创粉丝点击