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.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;
}