日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用SharpZipLib来压缩和解压文件 --zt

發布時間:2023/12/9 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用SharpZipLib来压缩和解压文件 --zt 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
from:http://www.cnblogs.com/zhangweiguo3984/archive/2007/03/15/314333.html#675634
1.建立工程,添加引用,添加SharpZipLib.dll
2.建立壓縮和解壓類CompressionFile.cs
添加如下代碼
using?System;
using?System.IO;
using?ICSharpCode.SharpZipLib.Zip;
using?ICSharpCode.SharpZipLib.GZip;
using?ICSharpCode.SharpZipLib.BZip2;
using?ICSharpCode.SharpZipLib.Checksums;
using?ICSharpCode.SharpZipLib.Zip.Compression;
using?ICSharpCode.SharpZipLib.Zip.Compression.Streams;

namespace?WebApplication3
{
????
ZipClass?壓縮文件#region?ZipClass?壓縮文件
????
public?class?ZipClass
????
{
????????
public?void?ZipFile(string?FileToZip,?string?ZipedFile?,int?CompressionLevel,?int?BlockSize,string?password)
????????
{
????????????
//如果文件沒有找到,則報錯
????????????if?(!?System.IO.File.Exists(FileToZip))?
????????????
{
????????????????
throw?new?System.IO.FileNotFoundException("The?specified?file?"?+?FileToZip?+?"?could?not?be?found.?Zipping?aborderd");
????????????}

??
????????????System.IO.FileStream?StreamToZip?
=?new?System.IO.FileStream(FileToZip,System.IO.FileMode.Open?,?System.IO.FileAccess.Read);
????????????System.IO.FileStream?ZipFile?
=?System.IO.File.Create(ZipedFile);
????????????ZipOutputStream?ZipStream?
=?new?ZipOutputStream(ZipFile);
????????????ZipEntry?ZipEntry?
=?new?ZipEntry("ZippedFile");
????????????ZipStream.PutNextEntry(ZipEntry);
????????????ZipStream.SetLevel(CompressionLevel);
????????????
byte[]?buffer?=?new?byte[BlockSize];
????????????System.Int32?size?
=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.Exception?ex)
????????????
{
????????????????
throw?ex;
????????????}

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

?
????????
public?void?ZipFileMain(string[]?args)
????????
{
????????????
//string[]?filenames?=?Directory.GetFiles(args[0]);
????????????string[]?filenames?=?new?string[]{args[0]};
??
????????????Crc32?crc?
=?new?Crc32();
????????????ZipOutputStream?s?
=?new?ZipOutputStream(File.Create(args[1]));
??
????????????s.SetLevel(
6);?//?0?-?store?only?to?9?-?means?best?compression
??
????????????
foreach?(string?file?in?filenames)?
????????????
{
????????????????
//打開壓縮文件
????????????????FileStream?fs?=?File.OpenRead(file);
???
????????????????
byte[]?buffer?=?new?byte[fs.Length];
????????????????fs.Read(buffer,?
0,?buffer.Length);
????????????????ZipEntry?entry?
=?new?ZipEntry(file);
???
????????????????entry.DateTime?
=?DateTime.Now;
???
????????????????
//?set?Size?and?the?crc,?because?the?information
????????????????
//?about?the?size?and?crc?should?be?stored?in?the?header
????????????????
//?if?it?is?not?set?it?is?automatically?written?in?the?footer.
????????????????
//?(in?this?case?size?==?crc?==?-1?in?the?header)
????????????????
//?Some?ZIP?programs?have?problems?with?zip?files?that?don't?store
????????????????
//?the?size?and?crc?in?the?header.
????????????????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();
????????}

????}

????
#endregion


????
UnZipClass?解壓文件#region?UnZipClass?解壓文件
????
public?class?UnZipClass
????
{???
????????
/**////?<summary>
????????
///?解壓文件
????????
///?</summary>
????????
///?<param?name="args">包含要解壓的文件名和要解壓到的目錄名數組</param>

????????public?void?UnZip(string[]?args)
????????
{
????????????ZipInputStream?s?
=?new?ZipInputStream(File.OpenRead(args[0]));
????????????
try
????????????
{????????????????
????????????????ZipEntry?theEntry;
????????????????
while?((theEntry?=?s.GetNextEntry())?!=?null)?
????????????????
{???
????????????????????
string?directoryName?=?Path.GetDirectoryName(args[1]);
????????????????????
string?fileName??????=?Path.GetFileName(theEntry.Name);
???
????????????????????
//生成解壓目錄
????????????????????Directory.CreateDirectory(directoryName);
???
????????????????????
if?(fileName?!=?String.Empty)?
????????????????????
{???
????????????????????????
//解壓文件到指定的目錄
????????????????????????FileStream?streamWriter?=?File.Create(args[1]+fileName);
????
????????????????????????
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();
????????????}

????????????
catch(Exception?eu)
????????????
{
????????????????
throw?eu;
????????????}

????????????
finally
????????????
{
????????????????s.Close();
????????????}


????????}
//end?UnZip


????}
//end?UnZipClass
????#endregion


????
AttachmentUnZip#region?AttachmentUnZip
????
public?class?AttachmentUnZip
????
{
????????
public?AttachmentUnZip()
????????
{????????????
????????}

????????
public?static?void?UpZip(string?zipFile)
????????
{
????????????
string?[]FileProperties=new?string[2];

????????????FileProperties[
0]=zipFile;//待解壓的文件

????????????FileProperties[
1]=zipFile.Substring(0,zipFile.LastIndexOf("\\")+1);//解壓后放置的目標目錄

????????????UnZipClass?UnZc
=new?UnZipClass();

????????????UnZc.UnZip(FileProperties);
????????}


????}

????
#endregion

}
3.建立測試頁面
3.1html
<HTML>
????
<HEAD>
????????
<title>WebForm1</title>
????????
<meta?name="GENERATOR"?Content="Microsoft?Visual?Studio?.NET?7.1">
????????
<meta?name="CODE_LANGUAGE"?Content="C#">
????????
<meta?name="vs_defaultClientScript"?content="JavaScript">
????????
<meta?name="vs_targetSchema"?content="http://schemas.microsoft.com/intellisense/ie5">
????
</HEAD>
????
<body?MS_POSITIONING="GridLayout">
????????
<form?id="Form1"?method="post"?runat="server">
????????????
<asp:Button?id="Button1"?style="Z-INDEX:?101;?LEFT:?56px;?POSITION:?absolute;?TOP:?64px"?runat="server"
????????????????Text
="壓縮"></asp:Button>
????????????
<asp:Button?id="Button2"?style="Z-INDEX:?102;?LEFT:?112px;?POSITION:?absolute;?TOP:?64px"?runat="server"
????????????????Text
="解壓"></asp:Button><INPUT?id="File1"?style="Z-INDEX:?103;?LEFT:?32px;?POSITION:?absolute;?TOP:?24px"?type="file"
????????????????name
="File1"?runat="server">
????????
</form>
????
</body>
</HTML>3.2 cs代碼
public?class?WebForm1?:?System.Web.UI.Page
????
{
????????
protected?System.Web.UI.WebControls.Button?Button1;
????????
protected?System.Web.UI.HtmlControls.HtmlInputFile?File1;
????????
protected?System.Web.UI.WebControls.Button?Button2;
????
????????
private?void?Page_Load(object?sender,?System.EventArgs?e)
????????
{
????????????
//?Put?user?code?to?initialize?the?page?here
????????}



????????
Web?Form?Designer?generated?code#region?Web?Form?Designer?generated?code
????????
override?protected?void?OnInit(EventArgs?e)
????????
{
????????????
//
????????????
//?CODEGEN:?This?call?is?required?by?the?ASP.NET?Web?Form?Designer.
????????????
//
????????????InitializeComponent();
????????????
base.OnInit(e);
????????}

????????
????????
/**////?<summary>
????????
///?Required?method?for?Designer?support?-?do?not?modify
????????
///?the?contents?of?this?method?with?the?code?editor.
????????
///?</summary>

????????private?void?InitializeComponent()
????????
{????
????????????
this.Button1.Click?+=?new?System.EventHandler(this.Button1_Click);
????????????
this.Button2.Click?+=?new?System.EventHandler(this.Button2_Click);
????????????
this.Load?+=?new?System.EventHandler(this.Page_Load);

????????}

????????
#endregion


????????
壓縮#region?壓縮
????????
private?void?Button1_Click(object?sender,?System.EventArgs?e)
????????
{
????????????
string?[]FileProperties=new?string[2];????????????
????????????
string?fullName=this.File1.PostedFile.FileName;//C:\test\a.txt
????????????string?destPath=System.IO.Path.GetDirectoryName(fullName);//C:\test
????????????
//待壓縮文件
????????????FileProperties[0]=fullName;

????????????
//壓縮后的目標文件
????????????FileProperties[1]=?destPath?+"\\"+?System.IO.Path.GetFileNameWithoutExtension(fullName)+".zip";
????????????ZipClass?Zc
=new?ZipClass();
????????????Zc.ZipFileMain(FileProperties);

????????????
//刪除壓縮前的文件
????????????System.IO.File.Delete(fullName);
????????}


????????
#endregion


????????
解壓#region?解壓
????????
private?void?Button2_Click(object?sender,?System.EventArgs?e)
????????
{
????????????
string?fullName=this.File1.PostedFile.FileName;//C:\test\a.zip
????????????
//解壓文件
????????????AttachmentUnZip.UpZip(fullName);
????????}

????????
#endregion

????}

轉載于:https://www.cnblogs.com/Nina-piaoye/archive/2007/03/15/675739.html

總結

以上是生活随笔為你收集整理的用SharpZipLib来压缩和解压文件 --zt的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。