壓縮流用法
❶ 可壓縮流體的流體的可壓縮性
流體的可壓縮性是指流體受壓,體積縮小,密度增大,除去外力後能恢復原狀的性質。可壓縮性實際上是流體的彈性。 液體的可壓縮性用壓縮系數來表示,他表示在一定溫度下,壓強增加一個單位體積的相對縮小率。若液體的原體積為V,則壓強增加dp後,體積減少dV,壓縮系數為
κ=-V^-1*dV/dp
由於液體受壓體積減少,dp和dV異號,式中右側加負號,以使κ為正值,其值越大則流體越容易壓縮。κ的單位是1/Pa。
根據增壓前後質量不變,壓縮系數可表示為
κ=dρ/(ρdp)
液體的壓縮系數隨溫度和壓強變化。
壓縮系數的倒數是體積彈性模量,即
Κ=1/κ=-Vdp/dV=ρdp/dρ
Κ的單位是Pa。 氣體具有顯著的可壓縮性,在一般情況下,常用氣體(如空氣、氮氣、氧氣、二氧化碳等)的密度、壓強溫度三者的關系符合完全氣體狀態方程,即
p/ρ=RT/M
式中p為氣體的絕對壓強(N/m^2);ρ為氣體的密度(kg/m^3);T為氣體的熱力學溫度(K);R為氣體常數,在標准狀態下,R=8314/M(J/kg*K),M為氣體的分子量。空氣的氣體常數R=287J/kg*K。當氣體在壓強很高,溫度很低的狀態下,或接近於液體時就不能當做完全氣體看待,上式不適用。
❷ 你好,最近我也遇到用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();
// }
}
}
❸ 關於 Delphi 中壓縮流和解壓流的應用
軟體開發者不免都要遇到壓縮數據的問題!經常使用Delphi的朋友都知道 它為我們提供了兩個流類(TCompressionStream和TDepressionStream)來完成數據的壓縮和解壓縮 但美中不足的是 該流在Delphi 的幫助備譽中沒有詳細的說明 使得它們在使用起來有一定得困難 其實在Delphi系統中提供了這兩個類的源代碼和庫 保存在Delphi 光碟的InfoExtraslib Src和InfoExtraslibObj目錄中(其中OBJ目錄中保存的是庫 Src目錄中保存的是源代碼 感興趣的朋友可以看看) 本人在使用的過程中 對它們有了一定的了解
一 類的說明
基類 TCustomZlibStream 類TCustomZlibStream 是類TCompressionStream和TDepressionStream 類的基類 它主要有一個屬性 OnProgress 在類進行壓縮或解壓縮的過程中會發生這個的事件 它的定義如下
Procere OnProgress (Sender: TObject); dynamic; 壓縮類TCompressionStream 類TCompressionStream除了繼承了基類的 OnProgress 屬性外 又增加了一個屬性 CompressionRate 它的定義如下
Property CompressionRate: Single read GetCompressionRate;通過這個屬性 可以得到壓縮比 它的幾個個重要的方法定義如下
Constructor TCompressionStream Create (CompressionLevel: TCompressionLevel; Dest: TStream);其中 TpressionLevel(壓縮類型) 它由如仿中段下幾個定義
① clNone 不進行數據壓縮
② clFastest 進行快速壓縮 犧牲壓縮效率
③ clDefault 進行正常壓縮
④ clMax 進行最大化壓縮 犧牲速度
Dest 目的流 用於存放壓縮過的數據
Function TCompressionStream Write (const Buffer; Count: Longint): Longint;其中 Buffer 需要壓縮的數據
Count: 需要壓縮的數據的位元組數
函數返回寫入流的位元組數
壓縮類TCompressionStream的數據只能是寫入的 如果試圖從其內部讀取數據 將發生一個 Error 異常 需要壓縮的數據通過方法 Write寫入流中 在寫入的過程中就被壓縮 並保存在由構造函數提供的內存流(TmemoryStream)中 同時觸發 OnProcess 事件
解壓縮類 TDepressionStream :和壓縮類TpressionStream 相反 它的數據是只能讀出的 如果試培坦圖往其內部寫數據 將發生一個 Error 異常 它的幾個重要方法定義如下
構造函數 Constructor Create(Source: TStream);
其中 Source 是保存著壓縮數據的流
Function Read(var Buffer; Count: Longint): Longint;數據讀出函數 Buffer 存數據緩沖區
Count: 緩沖區的大小
函數返回讀出的位元組數
數據在讀出的過程中 數據被解壓縮 並觸發 OnProcess 事件
二 類的使用
通過類TCompressionStream和TdepressionStream的配合使用 我們可以非常方便地完成數據的壓縮和解壓 下面就是本人在編寫屏幕拷貝程序中的使用例子
Procere TClientForm GetScreen;VarSourceDC DestDC:HDC;Bhandle:HBITMAP;BitMap:TBitMap;BmpStream Deststream:TMemoryStream;SourceStream:TCompressionStream;Count:Integer;BeginSourceDC:=CreateDC( display nil);{得到屏幕的 DC}DestDC:=CreateCompatibleDC(SourceDC);{建立臨時 DC}Bhandle:=CreateCompatibleBitmap(SourceDC Screen Width Screen Height);{建立點陣圖}SelectObject(DestDC Bhandle);{選擇點陣圖DC}BitBlt(DestDC Screen Width Screen Height SourceDC SRCCOPY);{拷貝整個屏幕}BitMap:=TBitMap Create;BitMap Handle := Bhandle;{保存屏幕點陣圖到 BitMap中}BmpStream:=TMemoryStream Create;BitMap SaveToStream(BmpStream);{建立點陣圖數據的內存流}count:=BmpStream Size;{保存點陣圖的大小}DestStream:=TMemoryStream Create;{目標流 保存壓縮數據}SourceStream:=TCompressionStream Create(clMax DestStream);{構建壓縮流 採用最大化壓縮 並保存到目標流中}tryBmpStream SaveToStream(SourceStream);{壓縮點陣圖流}SourceStream Free;{完成壓縮 釋放壓縮流}BmpStream Clear;{清空原來點陣圖流}BmpStream WriteBuffer(Count Sizeof(Count));{將原來點陣圖的大小保存到新的點陣圖流中 以便使用}BmpStream CopyFrom(DestStream );{將壓縮數據附加到新的點陣圖流後面}BmpStream Position := ;NMStrm PostIt(BmpStream);{發送點陣圖流}finallyDestStream Free;BmpStream Destroy ;BitMap Destroy;DeleteDC(SourceDC);ReleaseDC(Bhandle SourceDC);end;{釋放有關資源}End;該過程得到整個屏幕的圖象拷貝 並利用壓縮流SourceStream和內存流 Deststream將點陣圖壓縮 並重新把點陣圖大小和壓縮數據流保存到點陣圖流中 發送出去 發送點陣圖大小的目的是在解壓前來確定需要的內存空間
lishixin/Article/program/Delphi/201311/24929
❹ 壓縮文件夾怎麼壓縮
把文件變成壓縮包的形式,可使用WinRAR壓縮軟體實現打包壓縮。下面給大家整理了相關的內容分享,感興趣的小夥伴不要錯過,趕快來看一下吧!
方法步驟如下:
1、在電腦中打開瀏覽器,使用網路搜索在搜索框中輸入「WinRAR」,點擊後面的「網路一下」進行搜索,找到帶有「官網」字樣的搜索結果,點擊「立即下載」進行WinRAR安裝包的下載。
批定壓縮分卷大小
( 按位元組計算),1M = 1024K,1K = 1024位元組,填寫數字即可。
其實辦法很簡單,就是在你壓縮這個文件時,分成幾個帶分卷壓縮包,分卷包大小設置為2M即可,比如:原來文件名為123.rar(3M),壓縮成分卷包後為123.part1.rar(2M)與123.part2.rar(1M)兩個文件,這樣你就可以上傳了。
❺ 什麼是rar文件如何壓縮...
RAR是一種壓縮文件,屬於WinRAR程序的文檔。
WinRAR 是 32 位 Windows 版本的 RAR 壓縮文件管理器 - 一個允許你創建、管理和控制壓縮文件的強大工具。存在一系列的 RAR 版本,應用於數個操作系統環境:Windows、Linux、FreeBSD 、DOS、OS/2、MacOS X。
運行於 Windows 下的 RAR 存在兩個版本:
?圖形用戶界面 版本- WinRAR.exe;
?命令行 控制台(文本模式)版本 - Rar.exe。
WinRAR 特性
?完全支持 RAR 和 ZIP 2.0 壓縮文件;
?高度成熟的原創壓縮演算法;
?對於文本、聲音、圖像和 32-位和 64-位 Intel 可執行程序壓縮的特殊優化演算法;
?外殼界面 包括 拖放 和 向導;
?命令行界面;
?非 RAR 壓縮文件 (7Z、ACE、ARJ、BZ2、CAB、GZ、ISO、JAR、LZH、TAR、UUE、Z)管理;
?固實 壓縮,比常規方法更能夠提升壓縮率 10% - 50%,尤其是在壓縮大量的小文件,類似的文件時;
?多卷壓縮文件;
?使用默認的或是選擇的自解壓模塊創建 自解壓 文件 (也可用於分卷);
?恢復 物理受損的壓縮文件;
?恢復卷 允許重建多卷壓縮丟失的卷。
?支持 Unicode 文件名;
用WinRAR打開
下載 http://down.exedown.com/Html/25003.html
使用:
壓縮文件格式在現代辦公應用中,常常會遇到。為什麼要使用壓縮格式?常見的壓縮格式有哪幾種?怎樣壓縮和解壓縮?本文將使你壓縮解壓一點通。
為什麼要壓縮
文件壓縮,顧名思義,就是把一個大的文件變小的過程。使用壓縮格式的理由有很多。如:我們經常用1.44MB軟盤在兩台電腦之間傳遞文件。文件太大怎麼辦?壓縮!硬碟中的資料越來越多,也越來越亂,如果將它們壓縮打包後存放,不僅節約了空間還利於查找;在帶寬還不能盡如人意的今天,通過網路傳輸文件(下載、收發郵件)當然也是越小越好;實時的影音服務(像流媒體技術)也需要使用壓縮技術……
常見的壓縮格式
壓縮格式有很多,比如:常見的ZIP格式、RAR格式、CAB格式、ARJ格式等等。還有一些比較少見的壓縮格式,如:BinHex、HQX、LZH、 Shar、TAR、GZ格式等等。另外,像MP3、VCD和DVD等音頻、視頻文件都使用了壓縮技術,但不是平常的壓縮,而一種實時的壓縮,是在播放時直接解壓。我們最常見的壓縮軟體就是大名鼎鼎的WinZip和WinRAR,只要掌握了其中一種,對於大部分的壓縮格式就可以「通吃」了。
WinRAR的使用
WinRAR通常能達到50%以上的壓縮率,不僅支持 RAR 和 ZIP 壓縮文件,還支持對諸如CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO等十幾種非RAR壓縮文件的管理。
畫面很簡潔,像資源管理器?當將滑鼠指針移動到按鈕上時,會浮現出相應的功能提示。
壓縮
軟體提供了一個非常友好的向導功能,跟著它一步步做就可以順利完成。
點擊圖1工具欄上的向導按鈕,彈出如圖2所示的對話框,我們先來創建一個壓縮文件。選擇「創建新的壓縮文件」,點擊�下一步(如圖二)。
這里需要你選擇要壓縮的文件。可以壓縮一個文件,當然也可以把幾個文件乃至整個文件夾都選中(表示壓縮其中的所有文件)。像在資源管理器中一樣,用滑鼠和鍵盤配合選定連續或不連續的文件(夾)即可(連續要哪文件的話,就先用滑鼠點擊開始的文件再按住Shirt健點擊最後一個文件;單選的話,按住Ctrl健再用滑鼠點擊想到的文件)。完成後點擊確定。
在這個對話框中,需要你輸入壓縮後的文件名稱。如果想改變存放位置,點擊瀏覽,否則默認存放在源文件所在目錄。
有幾個問題要解決一下,需要說明的是:製作壓縮文件的時候,最好考慮接受方是否具備解壓縮的工具。如果沒有,就選擇「自解壓(.EXE)壓縮文件」如圖五。
在壓縮時,也可以用右健來壓縮,如果名字不想自定義,也沒有其它要求,就直接點 添加到「×××文件.rar「,如果還有其它要求,如製作成自解壓或改個名,就用 添加到檔案文件。。。就行了如圖七。
解壓縮
收到了一個壓縮文件之後,怎樣把它解壓縮?當然,你可以先啟動WinRAR,然後像上面的壓縮過程一樣利用向導來完成,只要你的機器上已經安裝了WinRAR,就試試下面這些更簡單的解壓的辦法。
1、雙擊法
安裝完WinRAR之後,系統已經自動將RAR和ZIP等格式的壓縮文件與這個解壓工具關聯起來了。直接在壓縮文件上雙擊滑鼠左鍵,就能打開WinRAR的窗口。
觀察一下與圖1有什麼區別?看看標題欄,再看看下面的文件瀏覽窗口……你的壓縮包中的文件已經顯示在了你的面前,不是嗎?想解壓縮嗎?單擊工具欄上的[解壓縮](如圖6)。默認情況下,系統會以你的壓縮文件名為路徑名,在當前文件夾下再建立一個新的文件夾,所有解壓縮出來的內容都放在這個文件夾內。如果你不滿意,看到右邊的目錄樹了嗎?在裡面點擊選擇你想要存放的位置吧。如果你只想解壓縮其中的部分文件(夾),可以先選中這些文件,再點擊[解壓縮]即可。
2、右鍵法
在壓縮文件的文件名(或文件圖標)上單擊滑鼠右鍵(如圖7)。選擇「釋放文件(A)…」,將會彈出如圖6所示的對話框,讓你選擇解壓縮的位置。如果你還覺得麻煩的話,乾脆一步到位,直接點擊圖中滑鼠所指的帶路徑的選項吧。稍安勿躁,馬上你就可以看到壓縮文件的本來面目了。
是不是很簡單?其實,在資源管理器窗口中選中幾個要壓縮的文件後,同樣可以用滑鼠右鍵的方法對它進行壓縮(如圖8,這里還可以進行更多設置呢)。不信你試試?
其他用法
WinRAR除了上面兩種最基本的功能之外,還有許多功能:向一個壓縮文件中添加文件;將一個壓縮文件中的部分文件清理出門(刪除);給一個解壓文件加密;分卷壓縮如此等等。只要你學會了壓縮和解壓縮的基本用法,仔細研究一下WinRAR的菜單和幫助吧,相信難不倒你的。