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

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

利用SharpZipLib進(jìn)行文件的壓縮和解壓縮

系統(tǒng) 2432 0

首先需要在項目里引用SharpZipLib.dll。然后修改其中的關(guān)于壓縮和解壓縮的類。實(shí)現(xiàn)源碼如下:

/**/ /// <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();
}

}

}


現(xiàn)在再來看看解壓文件類的源碼

/**/ /// <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();
}

}

}


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

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

/// <summary>
/// 調(diào)用源碼
/// </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"; //壓縮后的目標(biāo)文件
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/";//解壓后放置的目標(biāo)目錄
UnZipClass UnZc=new UnZipClass();
UnZc.UnZip(FileProperties);
}

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


利用SharpZipLib進(jìn)行文件的壓縮和解壓縮


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品国产亚洲精品 | 四虎色| 国产码欧美日韩高清综合一区 | 免费毛片网 | 日韩精品综合 | 亚洲无限看 | 午夜影院毛片 | 天天草天天 | 午夜视频网 | 好吊妞视频998www | 成人精品国产亚洲欧洲 | 日本一级aaaa特黄毛片 | 色一情一欲一爱一乱 | 鲁鲁狠色综合色综合网站 | 日韩区欧美区 | 91亚洲国产在人线播放午夜 | 亚洲国产美女精品久久 | 久久99热只有视精品6国产 | 国产成人免费a在线资源 | 男女性高清爱潮视频免费观看 | 久久国产精品一国产精品金尊 | 色婷婷中文网 | 九色蝌蚪自拍 | 久久精品无遮挡一级毛片 | 久久性 | 国产欧美日韩精品a在线观看 | 爱爱99 | 青青国产成人久久91 | 色八戒国产一区二区三区四区 | 国产精品久久久久久亚洲伦理 | 99re久久在热线播放最新地址 | 久久中文娱乐网 | 成人一级 | 久久天天躁狠狠躁狠狠躁 | 欧美手机手机在线视频一区 | 色黄网站成年女人色毛片 | 奇米777me| 91日韩精品天海翼在线观看 | 日日射影院| 成人欧美一区二区三区黑人 | 久操久热 |