導航:首頁 > 文件處理 > java流壓縮文件

java流壓縮文件

發布時間:2025-06-27 23:37:12

A. 電腦文件zip如何壓縮java實現對zip文件的壓縮

電腦文件zip如何壓縮(java實現對zip文件的壓縮)
一、java實現壓縮為zip
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
publicclassZipUtils{
privatestaticfinalintBUFFER_SIZE=2*1024;
publicstaticvoiddirFile(Filedir){
File[]files=dir.listFiles();//得到File數組,獲得目錄下所有文件
for(Filefile:files){//遍歷所有的子目錄和文件
if(file.isDirectory()){
dirFile(file);//如果是目錄遞歸調用dirFile()
}
//成功壓縮文件後,對原文件進行刪除
file.delete();
}
//順帶把對應的目錄進行刪除
dir.delete();
}
/**
*壓縮成ZIP方法1
*@paramsrcDir壓縮文件夾路徑
*@paramout壓縮文件輸出流
*@paramKeepDirstructure是否保留原來的目錄結構,true:保留目錄結構;
*false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結構可能會出現同名文件,會壓縮失敗)
*@throwsRuntimeException壓縮失敗會拋出運行時異常
*/
publicstaticvoidtoZip(StringsrcDir,OutputStreamout,booleanKeepDirstructure)
throwsRuntimeException{
longstart=System.currentTimeMillis();
ZipOutputStreamzos=null;
try{
zos=newZipOutputStream(out);
FilesourceFile=newFile(srcDir);
compress(sourceFile,zos,sourceFile.getName(),KeepDirstructure);
longend=System.currentTimeMillis();
System.out.println("壓縮完成,耗時:"+(end-start)+"ms");
}catch(Exceptione){
thrownewRuntimeException("ziperrorfromZipUtils",e);
}finally{
if(zos!=null){
try{
zos.close();
}catch(IOExceptione){
e.printstacktrace();
}
}
}
}
/**
*遞歸壓縮方法
*@paramsourceFile源文件
*@paramzoszip輸出流
*@paramname壓縮後的名稱
*@paramKeepDirstructure是否保留原來的目錄結構,會壓縮失敗)
*@throwsException
*/
privatestaticvoidcompress(FilesourceFile,ZipOutputStreamzos,Stringname,
booleanKeepDirstructure)throwsException{
byte[]buf=newbyte[BUFFER_SIZE];
if(sourceFile.isFile()){
//向zip輸出流中添加一個zip實體,構造器中name為zip實體的文件的名字
zos.putNextEntry(newZipEntry(name));
//文件到zip輸出流中
intlen;
FileInputStreamin=newFileInputStream(sourceFile);
while((len=in.read(buf))!=-1){
zos.write(buf,len);
}
//Completetheentry
zos.closeEntry();
in.close();
}else{
File[]listFiles=sourceFile.listFiles();
if(listFiles==null||listFiles.length==0){
//需要保留原來的文件結構時,需要對空文件夾進行處理
if(KeepDirstructure){
//空文件夾的處理
zos.putNextEntry(newZipEntry(name+"/"));
//沒有文件,不需要文件的
zos.closeEntry();
}
}else{
for(Filefile:listFiles){
//判斷是否需要保留原來的文件結構
if(KeepDirstructure){
//注意:file.getName()前面需要帶上父文件夾的名字加一斜杠,
//不然最後壓縮包中就不能保留原來的文件結構,即:所有文件都跑到壓縮包根目錄下了
compress(file,name+"/"+file.getName(),KeepDirstructure);
}else{
compress(file,file.getName(),KeepDirstructure);
}
}
}
}
}
}

B. java解壓zip或者tar.gz壓縮包,如何獲得被壓縮文件的

使用Java處理ZIP和TGZ壓縮包涉及ZipInputStream、ZipOutputStream和ZipFile類。當項目需要上傳或下載ZIP包時,開發者通常會利用這些類進行操作。
在基礎概念層面,壓縮文件的生成涉及讀取一個文件夾內容,創建ZipEntry並將其放入ZipOutputStream。然後,通過InputStream讀取源文件內容,將其寫入ZipOutputStream。這種流程形成了壓縮文件的創建。
解壓過程涉及一個特殊的File類,稱為ZipFile。使用Enumeration類可以讀取壓縮文件夾中的文件。解壓文件的過程開始於讀取壓縮文件夾中的文件,生成InputStream後將其寫入解壓輸出流。此操作實現了文件的解壓縮。
總結來說,本文介紹了Java中壓縮文件的壓縮與解壓方式,提供了相關類的使用方法。希望對讀者在項目開發中處理文件壓縮與解壓問題有所幫助。如果本文對您有幫助,請給予支持。

閱讀全文

與java流壓縮文件相關的資料

熱點內容
蘋果畫圖的室內app叫什麼 瀏覽:855
什麼伺服器功耗小 瀏覽:382
怎麼刪除助手文件夾 瀏覽:716
奇瑞風雲2空調壓縮機多少錢 瀏覽:777
硬體加密晶元手機 瀏覽:343
什麼app買東西便宜又好 瀏覽:553
運動app配速是什麼 瀏覽:633
51單片機SPWM逆變器 瀏覽:621
theisle怎麼看伺服器人數 瀏覽:279
shell運行linux命令 瀏覽:503
安卓電視版什麼意思 瀏覽:604
什麼app錄音可以循環播放 瀏覽:561
如何投屏游戲安卓 瀏覽:645
android百度地圖集成 瀏覽:78
200m寬頻演算法 瀏覽:822
怎麼把相冊命名為空文件夾 瀏覽:947
翻新二手車解壓 瀏覽:694
公鑰加密私鑰加密流程圖 瀏覽:499
蘋果手機看本地視頻用什麼app 瀏覽:300
為什麼某app打不開 瀏覽:390