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

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 2230 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條評論
主站蜘蛛池模板: 九九视频在线看精品 | 久久久久久影院 | 精久久 | 欧美 日韩 综合 | 久久中文字幕不卡一二区 | 加勒比久草 | 日韩毛片欧美一级a网站 | 蜜臀AV国产精品久久久久 | 99伊人 | 成人在线免费观看 | 啪啪免费观看 | 91精品成人免费国产 | av在线在线 | 欧美一级特黄aaaaaa在线看首页 | 精品一区二区三区免费毛片 | 黄视频网站在线看 | 亚洲精品乱码久久久久久 | 午夜视频在线看 | 亚洲啊v在线观看 | 天堂成人网 | 久久精品免费观看 | 成年人在线观看 | 日本黄色小视频 | 玖玖爱365| 高清一区二区在线观看 | 亚洲1区| 亚洲天堂视频在线观看 | 国产二区三区 | 亚洲精品一区在线 | 夜夜夜噜噜噜 | 日本免费黄色 | 国产91亚洲精品 | 日本高清视频在线三级 | 青草视频在线 | 成人在线精品视频 | 亚洲国产网站 | 一区二区三区波多野结衣 | 中文字幕亚洲一区二区三区 | 成人网av| 在线二区人妖系列 | 国产精品久久久久久久午夜 |