2019獨角獸企業重金招聘Python工程師标準>>>
代碼如下:
一、打包過程:
所需要jar包:安裝上Java環境就可以了
package filetozip;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FilesToZip {
public boolean fileToZips(String sourceFilePath,String zipFilePath,String zipFileName) throws Exception{
boolean flag=false;
BufferedInputStream bis=null;
ZipOutputStream zos=null;
File sourceFiles = new File(sourceFilePath);
if(sourceFiles.exists()==false){
System.out.println("待壓縮目錄"+sourceFiles+"不存在...");
}else{
//判斷待壓縮檔案是否已經被壓縮過 zipFiles--->fos--->zos設定壓縮包名稱
File zipFiles = new File(zipFilePath+"//"+zipFileName+".zip");
if(zipFiles.exists()){
System.out.println(zipFilePath+"目錄下已經存在"+zipFileName+".zip"+"壓縮包...");
}else {
//得到指定目錄下的所有檔案夾,注意傳回的File數組,不是String數組
File[] sourceFileList = sourceFiles.listFiles();
if(null==sourceFileList||sourceFileList.length<1){
System.out.println(sourceFilePath+"目錄下沒有待壓縮的檔案...");
}else {
FileOutputStream fos = new FileOutputStream(zipFiles);
zos = new ZipOutputStream(fos);
byte[] bys=new byte[1024*10];
for(int i=0;i<sourceFileList.length;i++){
//fileName:指定目錄下的檔案夾的名稱或檔案的名稱
String fileName = sourceFileList[i].getName();
//建立zip實體,并添加進壓縮包 ,zipEntry的值就是fileName的值
ZipEntry zipEntry = new ZipEntry(sourceFileList[i].getName());
//添加進壓縮包
zos.putNextEntry(zipEntry);
//讀取待壓縮檔案,并添加進壓縮包,FileInputStream讀的是一個具體檔案,不是一個檔案夾
FileInputStream fis = new FileInputStream(sourceFileList[i]);
//如果遇到bis存儲空間不夠,可以把1024*10的限制取消。
bis = new BufferedInputStream(fis, 1024*10);
//記錄目前讀取的位元組數
int reads=0;
while((reads=bis.read(bys, 0, 1024*10))!=-1){
zos.write(bys, 0, reads);
}
}
flag=true;
//特别注意,如果不關閉流端口,可能會導緻壓縮打包不成功!
if(null!=bis){
bis.close();
}
if(null!=zos){
zos.close();
}
}
}
}
return flag;
}
}
二、測試:
package filetozip;
public class TestMian {
public static void main(String[] args) throws Exception {
FilesToZip ftz = new FilesToZip();
//待打封包件所在的目錄
String sourceFilePath="D://test//0000//000//001";
//打好的壓縮包存放的位置
String zipFilePath="D://test//zipRes";
//壓縮包的名稱
String zipFileName="2017-05-28";
boolean result = ftz.fileToZips(sourceFilePath, zipFilePath, zipFileName);
if(result){
System.out.println("壓縮完成...");
}else {
System.out.println("壓縮失敗...");
}
}
}
轉載于:https://my.oschina.net/u/3197158/blog/910892