流解壓縮
A. 你好,最近我也遇到用java壓縮和解壓,向你咨詢下你的解決方案什麼,你是怎麼用文件流方式去壓縮
package com.onewaveinc.cwds.commons.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author fz 2010-7-30
* @Description 把指定文件夾下的所有文件壓縮為指定文件夾下指定zip文件;把指定文件夾下的zip文件解壓到指定目錄下
*/
public class ZipUtils {
private static final Logger logger = LoggerFactory.getLogger(ZipUtils.class);
private static final String SEPARATE = "/";
/**
* @Author fz 2010-7-30
* @param sourceDir 待壓縮目錄
* @param zipFile 壓縮文件名稱
* @throws Exception
* @Description 把sourceDir目錄下的所有文件進行zip格式的壓縮,保存為指定zip文件
*/
public static void zip(String sourceDir, String zipFile) throws Exception {
OutputStream os = null;
// try {
os = new FileOutputStream(zipFile);
BufferedOutputStream bos = new BufferedOutputStream(os);
ZipOutputStream zos = new ZipOutputStream(bos);
File file = new File(sourceDir);
String basePath = null;
if (file.isDirectory()) {
basePath = file.getPath();
} else {
// 直接壓縮單個文件時,取父目錄
basePath = file.getParent();
}
zipFile(file, basePath, zos);
zos.closeEntry();
zos.close();
// } catch (Exception e) {
// logger.error("壓縮文件或文件夾" + sourceDir + "時發生異常");
// e.printStackTrace();
// }
}
/**
* @Author fz 2010-7-30
* @param source 源文件
* @param basePath 待壓縮文件根目錄
* @param zos 文件壓縮流
* @Description 執行文件壓縮成zip文件
*/
private static void zipFile(File source, String basePath, ZipOutputStream zos) {
File[] files = new File[0];
if (source.isDirectory()) {
files = source.listFiles();
} else {
files = new File[1];
files[0] = source;
}
//存相對路徑(相對於待壓縮的根目錄)
String pathName = null;
byte[] buf = new byte[1024];
int length = 0;
try {
for (File file : files) {
if (file.isDirectory()) {
pathName = file.getPath().substring(basePath.length() + 1) + SEPARATE;
zos.putNextEntry(new ZipEntry(pathName));
zipFile(file, basePath, zos);
} else {
pathName = file.getPath().substring(basePath.length() + 1);
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
zos.putNextEntry(new ZipEntry(pathName));
while ((length = bis.read(buf)) > 0) {
zos.write(buf, 0, length);
}
is.close();
}
}
} catch (Exception e) {
logger.error("壓縮文件" + source + "時發生異常");
e.printStackTrace();
}
}
/**
* @Author fz 2010-7-30
* @param zipfile 待解壓文件
* @param destDir 解壓文件存儲目錄
* @throws Exception
* @Description 解壓zip文件,只能解壓zip文件
*/
@SuppressWarnings("unchecked")
public static void unZip(String zipfile, String destDir) throws Exception {
destDir = destDir.endsWith(SEPARATE) ? destDir : destDir + SEPARATE;
byte b[] = new byte[1024];
int length;
ZipFile zipFile;
// try {
zipFile = new ZipFile(new File(zipfile));
Enumeration enumeration = zipFile.getEntries();
ZipEntry zipEntry = null;
while (enumeration.hasMoreElements()) {
zipEntry = (ZipEntry) enumeration.nextElement();
File loadFile = new File(destDir + zipEntry.getName());
if (zipEntry.isDirectory()) {
loadFile.mkdirs();
} else {
if (!loadFile.getParentFile().exists()) {
loadFile.getParentFile().mkdirs();
}
OutputStream outputStream = new FileOutputStream(loadFile);
InputStream inputStream = zipFile.getInputStream(zipEntry);
while ((length = inputStream.read(b)) > 0)
outputStream.write(b, 0, length);
outputStream.close();
inputStream.close();
}
}
zipFile.close();
// } catch (IOException e) {
// logger.error("解壓文件" + zipfile + "時發生異常");
// e.printStackTrace();
// }
}
}
B. 電腦一般用什麼解壓軟體
常用的解壓軟體有兩種: winRAR、360壓縮
1、WinRAR 是一款功能強大的壓縮包管理器,它是檔案工具RAR在 Windows環境下的圖形界面。該軟體可用於備份數據,縮減電子郵件附件的大小,解壓縮從 Internet 上下載的 RAR、ZIP及其它類型文件,並且可以新建 RAR 及 ZIP 格式等的壓縮類文件。
2、360壓縮: 360壓縮是新一代的壓碧尺縮軟體,360壓縮支持解壓主流的rar、zip、7z、iso等多達40種壓縮文件。360壓縮內置雲安全引擎,可以檢測木馬,更安全。大幅簡化了傳統軟體的繁瑣操作,還改進了超過20項的使用細節,擁有全新的界面。
3、7-Zip
7-Zip完全開源免費,它的7z壓縮格式是目前數據壓縮率最高的格式,沒有之一,雖然用WinRAR的人很多,zip和rar格式的文件也很常見,但rar與7z相比壓縮率是相當低的。通常情況下,7-zip可以把zip文件最高再壓縮10%的體積。
4、BandiZip
BandiZip是一款輕量級、快速且整合程度較高的解壓縮軟體。bandzip具備非常快速的壓縮與解壓縮演算法,支持滑鼠拖拽操作以及多線程操作。而且bandzip還支持目前主流皮慧歷的解壓縮文件格式,包括ZIP、7Z、RAR等。
5、快壓
自己壓縮自己解壓的一款,使用快壓解壓不是快壓壓縮的文件很有可能出現文件損壞,慎重使用。
快壓軟體是一款免費、方便、快速的壓縮和解壓縮利器,擁有一流的壓縮技術,是國內第一款具備自主壓縮格式的軟體,快壓自身的壓縮格式 kz 具有超大的壓縮比和超快的壓縮解壓速度,同時,快壓還兼容 rar,zip 和 7z 等40餘種壓縮文件!
(2)流解壓縮擴展閱讀
解壓縮(Decompression)是壓縮的反過程,是將一個通過軟體壓縮的文檔、文件等各種東西恢復到壓縮之前的樣子。解壓文件的方法是:右擊圖標-解壓文件-確定(前提為安裝過相關解壓軟體並關聯過右鍵菜單),解壓完成以後就會在壓縮文件所在目錄出現一個新的文件,這個文件就是你解壓出來的文件,但其也有可能不是一個文件,是由多個文件組成的東西。
有損壓縮和無損壓縮
在上文中討論的壓縮類型稱為無損壓縮,因為您重新創建的文件與原始文件完全相同。所有無損壓縮都基於這樣一種理念:將文件變為「較小」的形式以利於傳輸或存儲,並在另一方收到它後復原以便重新使用它。
有損壓縮則與此大不相同。這些程序直接去除「不必要」的信息,對文件進行剪裁以使它變得更小。這種類型的壓縮大量應用於減小點陣圖圖像的文燃搜件大小,因為點陣圖圖像的體積通常非常龐大。為了了解有損壓縮的工作原理,讓我們看看你的計算機如何對一張掃描的照片進行壓縮。
對於此類文件,無損壓縮程序的壓縮率通常不高。盡管圖片的大部分看起來都是相同的——例如,整個天空都是藍色的——但是大部分像素之間都存在微小的差異。為了使圖片變得更小同時不降低其解析度,您必須更改某些像素的顏色值。如果圖片中包含大量的藍色天空,程序會挑選一種能夠用於所有像素的藍色。然後,程序重寫該文件,所有天空像素的值都使用此信息。
如果壓縮方案選擇得當,您不會注意到任何變化,但是文件大小會顯著減小。 當然,對於有損壓縮,在文件壓縮後您無法將其復原成原始文件的樣子。您必須接受壓縮程序對原始文件的重新解釋。因此,如果需要完全重現原來的內容(例如軟體應用程序、資料庫和總統就職演說),則不應該使用這種壓縮形式。
C. 解壓縮是什麼意思
解壓縮,計算機術語,就是將一個通過軟體壓縮的文檔、文件等各種東西恢復到壓縮之前的樣子,這種形式以利於傳輸或存儲。其原理就是利用壓縮軟體把二進制信息中相同的字元串以特殊字元標記來達到壓縮的目。
1、在360安全衛士里,找到軟體管家,下載360壓縮軟體。
(3)流解壓縮擴展閱讀:
1、手機網路瀏覽器不具有解壓縮功能,如果想要在手機上查看壓縮文件,可以下載手機版本的解壓縮軟體,比如RAR for Android、文件全能王等等。
2、最受歡迎的壓縮軟體RAR for Android,RAR是來自RARLAB的官方版本,支持創建RAR和ZIP,
3、解壓RAR, RAR5, ZIP, TAR, GZ, BZ2, XZ, 7z, ISO, ARJ,支持ZIP和RAR的修復,基準測試與WinRAR兼容,支持恢復記錄,恢復卷,固實壓縮,多核壓縮。
4、下載的壓縮軟體--文件全能王,對國人永久免費,千萬android機友首選文件全能王,強大的文件傳輸能力
5、通過瀏覽器即實現跨三平台文件傳輸(android、蘋果、電腦,通過WiFi或自建熱點零流量飛速妙傳各類文件。
D. 解壓軟體哪個好用免費
解壓軟體比較好用的有:WinRAR、360壓縮、7-Zip、BandiZip、快壓等。
1、WinRAR
WinRAR 是一款功能強大的壓縮包管理器,它是檔案工具RAR在Windows環境下的圖形界面。
該軟體可用於備份數據,縮減電子郵件附件的大小,解壓縮從 Internet 上下載的RAR、ZIP及其它類型文件,並且可以新建 RAR 及 ZIP 格式等的壓縮類文件。從5.60版開始,WinRAR啟用了新的圖標,但用戶仍可以通過官網提供的主題包換回原版風格的圖標。