///壓縮文件///usingSystem;usingSystem.IO;usingICSharpCode.SharpZipLib.Checksums;usingICSharpCode.SharpZipLib.Zip;usingICSharpCode.SharpZipLib.GZip;namespaceC" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用SharpZipLib進行文件的壓縮和解壓縮

系統 2156 0

首先需要在項目里引用SharpZipLib.dll。然后修改其中的關于壓縮和解壓縮的類。實現源碼如下:

/**/ /// <summary>
/// 壓縮文件
/// </summary>


using System;
using System.IO;

using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;

namespace Compression
... {
public class ZipClass
... {

public void ZipFile( string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)
... {
// 如果文件沒有找到,則報錯
if ( ! System.IO.File.Exists(FileToZip))
... {
throw new System.IO.FileNotFoundException( " Thespecifiedfile " + FileToZip + " couldnotbefound.Zippingaborderd " );
}


System.IO.FileStreamStreamToZip
= new System.IO.FileStream(FileToZip,System.IO.FileMode.Open,System.IO.FileAccess.Read);
System.IO.FileStreamZipFile
= System.IO.File.Create(ZipedFile);
ZipOutputStreamZipStream
= new ZipOutputStream(ZipFile);
ZipEntryZipEntry
= new ZipEntry( " ZippedFile " );
ZipStream.PutNextEntry(ZipEntry);
ZipStream.SetLevel(CompressionLevel);
byte []buffer = new byte [BlockSize];
System.Int32size
= StreamToZip.Read(buffer, 0 ,buffer.Length);
ZipStream.Write(buffer,
0 ,size);
try
... {
while (size < StreamToZip.Length)
... {
int sizeRead = StreamToZip.Read(buffer, 0 ,buffer.Length);
ZipStream.Write(buffer,
0 ,sizeRead);
size
+= sizeRead;
}

}

catch (System.Exceptionex)
... {
throw ex;
}

ZipStream.Finish();
ZipStream.Close();
StreamToZip.Close();
}


public void ZipFileMain( string []args)
... {
string []filenames = Directory.GetFiles(args[ 0 ]);

Crc32crc
= new Crc32();
ZipOutputStreams
= new ZipOutputStream(File.Create(args[ 1 ]));

s.SetLevel(
6 ); // 0-storeonlyto9-meansbestcompression

foreach ( string file in filenames)
... {
// 打開壓縮文件
FileStreamfs = File.OpenRead(file);

byte []buffer = new byte [fs.Length];
fs.Read(buffer,
0 ,buffer.Length);
ZipEntryentry
= new ZipEntry(file);

entry.DateTime
= DateTime.Now;

// setSizeandthecrc,becausetheinformation
// aboutthesizeandcrcshouldbestoredintheheader
// ifitisnotsetitisautomaticallywritteninthefooter.
// (inthiscasesize==crc==-1intheheader)
// SomeZIPprogramshaveproblemswithzipfilesthatdon'tstore
// thesizeandcrcintheheader.
entry.Size = fs.Length;
fs.Close();

crc.Reset();
crc.Update(buffer);

entry.Crc
= crc.Value;

s.PutNextEntry(entry);

s.Write(buffer,
0 ,buffer.Length);

}


s.Finish();
s.Close();
}

}

}


現在再來看看解壓文件類的源碼

/**/ /// <summary>
/// 解壓文件
/// </summary>


using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;

using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip;

namespace DeCompression
... {
public class UnZipClass
... {
public void UnZip( string []args)
... {
ZipInputStreams
= new ZipInputStream(File.OpenRead(args[ 0 ]));

ZipEntrytheEntry;
while ((theEntry = s.GetNextEntry()) != null )
... {

string directoryName = Path.GetDirectoryName(args[ 1 ]);
string fileName = Path.GetFileName(theEntry.Name);

// 生成解壓目錄
Directory.CreateDirectory(directoryName);

if (fileName != String.Empty)
... {
// 解壓文件到指定的目錄
FileStreamstreamWriter = File.Create(args[ 1 ] + theEntry.Name);

int size = 2048 ;
byte []data = new byte [ 2048 ];
while ( true )
... {
size
= s.Read(data, 0 ,data.Length);
if (size > 0 )
... {
streamWriter.Write(data,
0 ,size);
}

else
... {
break ;
}

}


streamWriter.Close();
}

}

s.Close();
}

}

}


有了壓縮和解壓縮的類以后,就要在窗體里調用了。怎么?是新手,不會調用?Ok,接著往下看如何在窗體里調用。

首先在窗體里放置兩個命令按鈕(不要告訴我你不會放啊~),然后編寫以下源碼

/// <summary>
/// 調用源碼
/// </summary>

private void button2_Click_1(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:/unzipped/";//待壓縮文件目錄
FileProperties[1]="C:/zip/a.zip"; //壓縮后的目標文件
ZipClass Zc=new ZipClass();
Zc.ZipFileMain(FileProperties);
}

private void button2_Click(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:/zip/test.zip";//待解壓的文件
FileProperties[1]="C:/unzipped/";//解壓后放置的目標目錄
UnZipClass UnZc=new UnZipClass();
UnZc.UnZip(FileProperties);
}

好了,到此為止,如何壓縮和解壓縮的類都已經完成了


利用SharpZipLib進行文件的壓縮和解壓縮


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品一区二区卡 | 青青青国产精品国产精品久久久久 | 国产激情一级毛片久久久 | 波多野给衣一区二区三区 | 国产精品一区在线观看你懂的 | 亚洲国产精品综合久久久 | 日韩中文字幕在线视频 | 亚洲日产2021三区在线 | 手机在线精品视频每日更新 | 一级爱爱片一级毛片-一毛 一级白嫩美女毛片免费 | 欧美精品xxxⅹ欧美 欧美精品成人 | 香蕉视频在线视频 | 99久久久国产精品免费牛牛四川 | 99亚洲精品高清一二区 | 美女啪啪免费网站 | 国产欧美精品综合一区 | 在线观看偷拍视频一区 | 亚洲精品国产第一区二区多人 | 中文字幕日韩女同互慰视频 | 麻豆国内精品久久久久久 | 99久久精品国产自免费 | 国产人成午夜免视频网站 | 久久频这里精品99香蕉久网址 | 九九影片重口味 | 羞羞网站在线播放 | 日本人69视频页码jlzz | 中文字幕在线视频精品 | 色久悠悠在线观看 | 日韩国产欧美精品综合二区 | 四虎影在永久在线观看 | 久久亚洲国产的中文 | 欧美不卡精品中文字幕日韩 | 天天草天天干天天 | 欧美一级黄色片在线观看 | 99视频九九精品视频在线观看 | 久久天天躁狠狠躁夜夜中文字幕 | 国产亚洲综合精品一区二区三区 | 伊人伊网 | 天天爱天天色天天干 | 91热久久免费频精品动漫99 | 亚洲美女性生活视频 |