将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下

时间:2021-01-04 12:43:35

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;



/**
  * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下
  * @param sourceFilePath--待压缩的文件路径
  * @param zipFilePath--压缩后存放路径
  * @param fileName--压缩后文件的名称
  * @return
  */
 public static boolean fileToZio(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 zipPathDir = new File(zipFilePath);
    //如果保存目录不存在,先创建目录
    if(!zipPathDir.exists()){
     zipPathDir.mkdir();
    }
    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++) {
       String directory = sourceFiles[i].getName();
       //取特定字符的文件:比如特定时间的文件20170416
       if(directory.indexOf("20170416") != -1){
       //创建ZipEntry实体类
       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();
   }catch(IOException e){
    e.printStackTrace();
    throw new RuntimeException();
   }finally{
    //关闭流
    try{
     if(null != bis){
      bis.close();
     }
     if(null != fis){
      fis.close();
     }
     if(null != zos){
      zos.close();
     }
     
     if(null != fos){
      fos.close();
     }
     
    }catch(IOException e){
     e.printStackTrace();
     throw new RuntimeException();
    }
   }
   
 
  
  }
  return flag;
 
 }