java 压缩

来源:互联网 发布:mysql从删库到跑路 编辑:程序博客网 时间:2024/06/14 21:02
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;  /**  * 将文件夹下面的文件  * 打包成zip压缩文件  *   * @author admin  *  */  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+"不存在.");          }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:\\TestFile";          String zipFilePath = "D:\\tmp";          String fileName = "12700153file";          boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName);          if(flag){              System.out.println("文件打包成功!");          }else{              System.out.println("文件打包失败!");          }      }        }  

0 0
原创粉丝点击