利用#Develop內嵌的#ZipLib,輕鬆搞定.net下的解壓縮 (轉)
利用#Develop內嵌的#ZipLib,輕鬆搞定下的解
#Develop是一個用於製作或者的專案而設計的一個編輯器,而#ZipLib是它內嵌的一個製作.net下的解壓縮的強大工具。關於#Develop這個軟體,大家可以去它的中文網站(x.cn/comm/bbs/Forum.?Forum_ID=14">)最新的版本。
下面就來介紹用#ZipLib進行.net下的解壓縮的方法。
1.BZip2
加入ICode.SharpZipLib.dll的引用,在#Develop的目錄下的SharpDevelopbin目錄下。然後在中使用using語句把BZip2
類庫包含進來。
壓縮:使用BZip2的靜態方法Compress。
它的第一個引數是所要壓縮的所代表的輸入流,可以使用System.IO.File的靜態方法OpenRead。
第二個引數是要建立的壓縮檔案所代表的輸出流,可以使用System.IO.File的靜態方法Create建立,壓縮檔名是所要壓縮檔案的檔名
加上壓縮字尾.bz(同樣你也可以取其他的檔名)。
第三個引數是要壓縮的塊大小(一般為2048的整數)。
解壓:使用BZip2的靜態方法Decompress。
它的第一個引數是所要解壓的壓縮檔案所代表的輸入流,可以使用System.IO.File的靜態方法OpenRead。
第二個引數是要建立的解壓檔案所代表的輸出流,可以使用System.IO.File的靜態方法Create建立,因為解壓檔案的檔名是去掉了壓縮
副檔名的壓縮檔名(你也可以做成解壓檔案與壓縮檔案不同名的)。
編譯你的程式,然後在命令列方式下輸入bzip2 檔名(假設建立的C#檔案是bzip2,就可以生成壓縮檔案;輸入bzip2 -d 檔名,就會解壓
出檔案來(-d是用來表示解壓,你也可以使用其他的符號)。
呵呵,原來做壓縮可以這麼簡單的,壓縮效果也可以啊。
using System;
using System.IO;
using ICSharpCode.SharpZipLib.BZip2;
class MainClass
{
public static void Main(string[] args)
{
if (args[0] == "-d") { // 解壓
BZip2.Decompress(File.OpenRead(args[1]), File.Create(Path.GetFileNameWithoutExtension(args[1])));
} else { //壓縮
BZip2.Compress(File.OpenRead(args[0]), File.Create(args[0] + ".bz"), 4096);
}
}
}
2.
加入ICSharpCode.SharpZipLib.dll的引用,在#Develop的安裝目錄下的SharpDevelopbin目錄下。然後在程式中使用using語句把GZip類
庫包含進來。
由於GZip沒有BZip2的簡單解壓縮方法,因此只能使用流方法來進行解壓縮。具體的方法見程式的說明。
編譯程式,然後在命令列方式下輸入GZ檔名(假設建立的C#檔案是GZip,就可以生成壓縮檔案;輸入G-d 檔名,就會解壓出文
件來(-d是用來表示解壓,你也可以使用其他的符號)。
using System;
using System.IO;
using ICSharpCode.SharpZipLib.GZip;
class MainClass
{
public static void Main(string[] args)
{
if (args[0] == "-d") { // 解壓
Stream s = new GZipInputStream(File.OpenRead(args[1]));
//生成一個GZipInputStream流,用來開啟壓縮檔案。
//因為GZipInputStream由Stream派生,所以它可以賦給Stream。
//它的構造的引數是一個表示要解壓的壓縮檔案所代表的檔案流
FileStream fs = File.Create(Path.GetFileNameWithoutExtension(args[1]));
//生成一個檔案流,它用來生成解壓檔案
//可以使用System.IO.File的靜態函式Create來生成檔案流
int size = 2048;//指定壓縮塊的大小,一般為2048的倍數
byte[] writeData = new byte[size];//指定緩衝區的大小
while (true) {
size = s.Read(writeData, 0, size);//讀入一個壓縮塊
if (size > 0) {
fs.Write(writeData, 0, size);//寫入解壓檔案代表的檔案流
} else {
break;//若讀到壓縮檔案尾,則結束
}
}
s.Close();
} else { // 壓縮
Stream s = new GZipOutputStream(File.Create(args[0] + ".gz"));
//生成一個GZipOutputStream流,用來生成壓縮檔案。
//因為GZipOutputStream由Stream派生,所以它可以賦給Stream。
FileStream fs = File.OpenRead(args[0]);
/生成一個檔案流,它用來開啟要壓縮的檔案
//可以使用System.IO.File的靜態函式OpenRead來生成檔案流
byte[] writeData = new byte[fs.Length];
//指定緩衝區的大小
fs.Read(writeData, 0, (int)fs.Length);
//讀入檔案
s.Write(writeData, 0, writeData.Length);
//寫入壓縮檔案
s.Close();
//關閉檔案
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974824/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用Java實現zip壓縮/解壓縮 (轉)Java
- 辦公室革命,教你輕鬆搞定輕鬆玩轉ExcelExcel
- Linux下常用壓縮格式的壓縮與解壓方法---轉載Linux
- Linux下壓縮,解壓縮RAR包(轉)Linux
- JAVA基礎:利用Java實現zip壓縮解壓縮(轉)Java
- unix和linux下常用壓縮格式的壓縮與解壓方法(轉)Linux
- 在ASP.NET裡輕鬆實現縮圖 (轉)ASP.NET
- Linux下的tar壓縮解壓縮命令詳解Linux
- aix 下壓縮與解壓縮AI
- Linux下常用壓縮格式的壓縮與解壓方法Linux
- 利用Docker輕鬆玩轉CassandraDocker
- .NET 壓縮/解壓檔案
- linux下壓縮解壓縮命令Linux
- 利用DotNetZip服務端壓縮檔案並下載服務端
- linux壓縮(解壓縮)命令詳解-轉Linux
- Linux中檔案的壓縮與解壓縮(轉貼)Linux
- Linux下檔案的壓縮與解壓Linux
- Linux下常見檔案格式的壓縮、解壓小結(轉)Linux
- 輕鬆搞定Windows惡意程式碼攻擊(轉)Windows
- linux下gzip的壓縮詳解Linux
- linux下的檔案的壓縮和解壓縮Linux
- NET中SharpZipLib 的使用(一)【壓縮與解壓】
- 利用ICSharpCode.SharpZipLib來實現的壓縮與解壓縮類CSharpRPC
- Linux下的壓縮檔案剖析(轉)Linux
- aix 檔案的壓縮與解壓縮AI
- windows環境下利用重定向管道解壓tar.xz壓縮檔案Windows
- Linux下zip壓縮和unzip解壓縮命令全解Linux
- 六大絕招輕鬆搞定系統更新(轉)
- 解包 bzip2 壓縮的壓縮文件(轉)
- 輕鬆搞定面試中的連結串列題目面試
- tar的打包-壓縮與解壓縮,並解壓到指定的目錄
- linux下壓縮、解壓命令大全Linux
- unix系統下常用的解壓縮命令
- Linux 常用的壓縮與解壓縮命令詳解Linux
- AIX下的壓縮測試及所有壓縮命令AI
- NET中SharpZipLib 的使用(二)【Web中壓縮與解壓】Web
- Asp.net實現線上壓縮與解壓ASP.NET
- 輕鬆搞定分組報表中的各種排序排序