做网站win7好用么,江津集团网站建设,建设工程合同管理网站,livemesh wordpress真是折腾呀#xff0c;网上虽然有不少的源码但测试几个就是不成功#xff0c;经过折腾还是折腾出来了现在分享出来给大家。
源码还是在网友们的基础上调整的#xff0c;主要是调整源码大大小写格式。 sharpziplib.dll 下载#xff1a;http://pan.baidu.com/share/link?sh…真是折腾呀网上虽然有不少的源码但测试几个就是不成功经过折腾还是折腾出来了现在分享出来给大家。
源码还是在网友们的基础上调整的主要是调整源码大大小写格式。 sharpziplib.dll 下载http://pan.baidu.com/share/link?shareid1016448925uk134565274fid3214033513
首先需要在项目里引用sharpziplib.dll
ZipClass.cs 类函数 包括压缩和解压 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;
using ICSharpCode.SharpZipLib.Checksums;
namespace Updatezip
{#region 压缩文件类/// summary/// 压缩文件 /// /summarypublic class ZipClass{public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize){//如果文件没有找到则报错 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]);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 dont 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#region 解压文件类/// summary/// 解压文件/// /summarypublic class UnZipClass{public void UnZip(string[] args){ZipInputStream s new ZipInputStream(File.OpenRead(args[0]));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] 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();}}
#endregion
}调用方法 /// 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);
}