///壓縮文件///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條評論
主站蜘蛛池模板: 国产成人小视频 | 亚洲视频 在线观看 | 日韩欧美亚洲在线 | 黄色网址在线播放 | 久碰人澡人澡人澡人澡91 | 欧美亚洲理伦电影毛片在线播放 | 国产精品久久久久久久网站 | 婷婷久久爱www | 欧美xxxxx69xxxx| 91短视频免费| 91在线看| 久久精品69| 国产精品精品视频一区二区三区 | 春色www在线视频观看 | 亚洲99 | 亚洲成人一区二区 | 日韩欧美一区二区三区不卡在线 | 九九热在线免费视频 | 久久精品a | 99在线精品视频在线观看 | 俄罗斯论理片 | 午夜一级毛片 | 视频一区二区不卡 | 日韩一区二区在线视频 | 国产成人久久 | 日本一区二区高清视频 | 天天干天天插天天 | 久久两性视频 | 午夜精品老牛av一区二区三区 | 夜夜夜夜猛噜噜噜噜噜 | 国产精品国产精品国产专区不卡 | 久久亚洲第一 | 亚洲欧美国产一区二区三区 | 色综合久久婷婷天天 | 日韩xxxx做受欧美 | 久久精品国产免费看久久精品 | 日本人成年视频在线观看 | a网站 | 亚洲黄色免费 | 日本v片做爰免费视频网站 国产精品v欧美精品v日韩精品 | 欧美极品jizzhd欧美 |