Java開發之淺談ZIP壓縮中要注意的幾點

2020-12-25 跟我一起學編程

前言

ZIP,是一個文件的壓縮的算法。ZIP通常使用後綴名「.zip」,它的MIME格式為 application/zip 。目前,ZIP格式屬於幾種主流的壓縮格式之一,其競爭者包括RAR格式以及開放源碼的7-Zip格式。從性能上比較,RAR格式較ZIP格式壓縮率較高,但是它的壓縮時間遠遠高於Zip。

在日常java開發中,經常會用到將一個文件夾或文件夾中的內容壓縮成一個zip包,這裡我們就從以下幾個需要注意的事項入手,談一談java如何開發zip壓縮類。

zip壓縮注意事項

1 判斷當前伺服器是Windows伺服器還是Linux伺服器

我們知道,當前伺服器的作業系統的兩大主流是windows伺服器和linux伺服器,對於不同的伺服器,zip壓縮軟體的安裝路徑可能不同,如Windows上可能配有winrar,而winrar會極大的提高壓縮效果;而linux伺服器呢,可能會安裝有zip而可以使用zip命令壓縮,也比java自有的類速度要快很多。那麼如何區分當前系統是Windows系統還是Linux系統呢?

Properties props=System.getProperties();

if(props.getProperty("os.name").indexOf("Linux")>-1){

//這裡可以執行Linux裡面的操作

}else if(props.getProperty("os.name").indexOf("Windows")>-1){

//這裡可以執行Linux裡面的操作

}

2.Windows系統下如何調用winrar壓縮軟體進行zip壓縮

public static boolean winrar(String winrarfile, String folder) {

String rarPath = "C:\\Program Files\\WinRAR\\WinRAR.exe";

File winrarFile=new File(rarPath);

if(winrarFile.isFile()&&winrarFile.exists()){

String cmd="";

cmd = rarPath + " a -ep1 " + winrarfile + " "+ folder;

try {

Process proc = Runtime.getRuntime().exec(cmd);

if (proc.waitFor() != 0) {

if (proc.exitValue() == 0)

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

}

return false;

}

3.Linux下調用zip命令進行zip壓縮

該處需要注意,首先應在Linux伺服器上安裝zip,可以使用命令:yum -y install zip;

public static boolean linuxZip(String zipfile, String folder){

try {

File file=new File(folder);

if(!file.exists())

{

return false;

}

if(file.isDirectory()&&file.listFiles().length==0)

{

return false;

}

Process proc = Runtime.getRuntime().exec(new String[] { "/bin/csh", "-c","cd "+folder+";zip -r "+zipfile +" ./*" });

if (proc.waitFor() != 0) {

if (proc.exitValue() == 0)

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

4.注意壓縮採用的編碼,避免亂碼現象

ZipOutputStream zos = new ZipOutputStream(new File(zipFileName));

zos.setEncoding("gb2312");

這裡如果壓縮後文件夾內中文文件名出現亂碼,嘗試修改gb2312為utf-8等別的編碼,可有效解決亂碼問題。

結語

如果您在開發過程中遇到有關zip的壓縮問題,不妨在下方留言,大家一起來應對助您解決問題。如果感覺本文對您有幫助,請收藏並轉發。

相關焦點

  • 淺談如何在NetBeans設置中文JavaDoc
    淺談如何在NetBeans設置中文JavaDoc NetBeans中文正式版一般會有一定的滯後性,對於E文不怎麼滴的人來說(比如本人)雖然NetBeans英文也可以用明白,但是每每在寫代碼中總有那麼些不知道具體意義的方法。本文將簡單談談如何在NetBeans設置中文JavaDoc。
  • Java不同壓縮算法的性能比較
    文中進行比較的算有:●JDK GZIP ——這是一個壓縮比高的慢速算法,壓縮後的數據適合長期使用。JDK中的java.util.zip.GZIPInputStream / GZIPOutputStream便是這個算法的實現。●JDK deflate ——這是JDK中的又一個算法(zip文件用的就是這一算法)。
  • Java 不同壓縮算法的性能比較
    文中進行比較的算有:JDK GZIP ——這是一個壓縮比高的慢速算法,壓縮後的數據適合長期使用。JDK中的java.util.zip.GZIPInputStream / GZIPOutputStream便是這個算法的實現。JDK deflate ——這是JDK中的又一個算法(zip文件用的就是這一算法)。
  • 為7-zip加右鍵菜單"壓縮為*.zip"
    7-zip有一個不足,就是context menu上不能直接生成*.zip(可以直接生成*.7z)那麼有沒有辦法添加Zip快捷壓縮呢,答案是肯定的:把下文存為a.reg,雙擊導入註冊表後,就可以了注意1:只能對一個文件(或目錄)處理注意2:請確保註冊表中程序名與你的
  • 他發明了zip壓縮格式,功成名就之際卻亡於墮落
    在他短暫的計算機生涯中,只留下了一樣如今幾乎存在於所有計算機的發明——zip壓縮格式。同時,當時的個人電腦儲存空間也極低,左右不過百來兆,因此,在那個年代,人們對一個高質量壓縮軟體的渴求異常熱烈。1985年一家名為SEA的公司開發了MS-DOS環境下第一個應用LZW算法的ARC壓縮軟體,一時風頭無兩。
  • 他發明了zip壓縮格式 功成名就之際亡於墮落
    壓縮算法的發展1952 年,麻省理工的一名學生 David A。同時,當時的個人電腦儲存空間也極低,左右不過百來兆,因此,在那個年代,人們對一個高質量壓縮軟體的渴求異常熱烈。1985 年一家名為 SEA 的公司開發了 MS-DOS 環境下第一個應用 LZW 算法的 ARC 壓縮軟體,一時風頭無兩。
  • 壓縮軟體之7-Zip下載安裝配置與使用經驗
    1.百度搜索「7zip」,找到官網連結,點擊進入7-Zip網站。7-Zip壓縮軟體下載中點擊「選項」-「系統」標籤中左側加號增加文件關聯。壓縮:選擇需要壓縮的文件或者文件夾,右鍵-"7-Zip"-壓縮選項,可以根據需要將文件或文件夾壓縮成7z格式或者zip格式。
  • Linux常用命令-解壓縮篇
    test向壓縮包中增加或更新文件有時候需要向壓縮包中增加文件,但又不想重新解壓打包,可以使用參數-u:zip -u test.zip test2 #向test.zip 包中增加test2文件壓縮時加密壓縮時如果需要對壓縮包進行加密,可使用-P參數:zip -r test.zip test1 test -P 66666
  • ZIP, 一個沒落天才的故事
    於是,使用文件壓縮技術減小文件的體積並將多個文件壓縮到一個封包中 就成為了BBS用戶的一項必須掌握的技巧。當時的美國BBS上,比較流行的是一種叫做ARC的壓縮技術,由於它是一家商業公司開發的壓縮技術,使用這種軟 件進行工作是需要付費的。
  • Zipfile(一)
    ,其中包括查看壓縮包中包含的文件信息、將壓縮包裡的部分或全部文件解壓縮至指定路徑下以及將某路徑下的文件添加至壓縮包中。這需要用到Python中內置的zipfile模塊。首先導入zipfile模塊:zipfile模塊有兩個類,分別為:zipfile.ZipFile以及zipfile.ZipInfo。
  • ubuntu下rar,zip等壓縮文件中文件名亂碼的解決方
    一般在ubuntu下打開壓縮包都會直接安裝系統提示的rar軟體包,我們可以安裝unrar來解決這個問題;本文引用地址:http://www.eepw.com.cn/article/201610/305988
  • java大數據之Hadoop開發環境
    JAVA和大數據是什麼關係大數據框架的編寫支持很多開發語言,但是Java在大數據開發方面有很大的優勢,目前流行的大數據Hadoop
  • Java開發必會的Linux命令
    作為一個Java開發人員,有些常用的Linux命令必須掌握。
  • 使用eclipse開發Java Web項目
    格式的壓縮包、tar.gz格式的壓縮包(用於Linux系統)、32-bit Windows zip壓縮包、64-bit Windows zip壓縮包。請根據自身使用的作業系統選擇不同的壓縮包下載。例如,32位的Windows作業系統可以選擇32-bit Windows zip壓縮包下載,64位的Windows作業系統可以選擇64-bit Windows zip壓縮包下載,Linux系統需要選擇tar.gz格式的壓縮包下載。這裡選擇32-bit Windows zip壓縮包下載。
  • rar 或 zip 壓縮文件忘記密碼了 改如何破解?
    rar格式壓縮文件格式Winrar是一款功能非常強大的文件壓縮解壓縮軟體工具。
  • Python標準庫學習之zipfile模塊
    ZIP_STORED(不壓縮)或zipfile. ZIP_DEFLATED(壓縮)allowZip64:True時,表示支持64位的壓縮,一般而言,在所壓縮的文件大於2G時,會用到這個選項;默認情況下,該值為False,因為Unix系統不支持。ZipFile.namelist()獲取zip文檔內所有文件的名稱列表(名稱是字符串)。
  • 網絡安全工程師教你:如何使用Kali Linux獲取ZIP壓縮包密碼?
    工具簡介:Fcrackzip是一款專門破解zip類型壓縮文件密碼的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,適用於linux、mac osx 系統。2.3 現在我們使用命令zip --password 12345 test.zip test 將test文件壓縮為格式為zip的壓縮文件,密碼為 password 壓縮文件名為 test.zip。2.4 現在我們先嘗試使用暴力破解對這個zip文件進行破解。
  • Python 中的 zip()函數
    [('Jane', 'Doe', 20), ('John', 'Williams', 40), ('Jennifer', 'Smith', 30)]請注意 names_and_ages 是如何包含帶有 n 個元素的元組(參數數量相同,或者可迭代對象,我們傳遞給 zip()函數)。
  • 淺談安卓apk加固原理和實現
    manifest文件,將自定義Application設定為「org.hackcode.ProxyApplication」3.拿到sourceProject文件中的dex文件,壓縮為TargetApk.zip4.反編譯殼apk:apktool.bat d shellApk.apk,得到shellApk文件5.拿到shellApk文件下的classes.dex和
  • Python zip函數及用法
    zip() 函數是 Python 內置函數之一,它可以將多個序列(列表、元組、字典、集合、字符串以及 range() 區間構成的列表)「壓縮」成一個