using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using ICSharpCode.SharpZipLib.Checksums;using ICSharpCode.SharpZipLib.Zip;using System.Collections;using System.IO;
namespace zip{ public partial class Form1 : Form {
private string zipfilecreatename; private string filesdirectorypath; private int dirnamelength = 0; private int ziplevel = 6;
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { zipfilecreatename = System.IO.Directory.GetCurrentDirectory().ToString() + @"/ziptemp.zip"; filesdirectorypath = System.IO.Directory.GetCurrentDirectory().ToString()+@"/ziptemp"; this.ZipFileCreate(); }
/// /// 压缩文件的方法 /// public void ZipFileCreate() { ZipOutputStream zipoutputstream = new ZipOutputStream(File.Create(zipfilecreatename)); zipoutputstream.SetLevel(ziplevel); Crc32 crc = new Crc32(); Hashtable fileList = this.getAllFies(); foreach (DictionaryEntry item in fileList) { FileStream fs = File.OpenRead(item.Key.ToString()); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); ZipEntry entry = new ZipEntry(item.Key.ToString().Substring(this.filesdirectorypath.Length - this.dirnamelength)); entry.DateTime = (DateTime)item.Value; entry.Size = fs.Length; fs.Close(); crc.Reset(); crc.Update(buffer); entry.Crc = crc.Value; zipoutputstream.PutNextEntry(entry); zipoutputstream.Write(buffer, 0, buffer.Length); } zipoutputstream.Finish(); zipoutputstream.Close(); }
//private void Button1_Click(object sender, System.EventArgs e) //{
// //压缩 // filezipcreate.ZipFileCreateName = Server.MapPath(DateTime.Now.ToString("yyyyMMddmmss") + ".zip"); // filezipcreate.FileDirectoryPath = Server.MapPath("../Admin/Css"); // filezipcreate.ZipFileCreate(); //}
//private void Button2_Click(object sender, System.EventArgs e) //{
// //解压 // UZipFilesCreate uzipfilescreate = UZipFilesCreate.UZipFilesInstance(); // uzipfilescreate.ZipFileName = this.File1.PostedFile.FileName.Trim(); // uzipfilescreate.filesCreatePath = Server.MapPath(""); // uzipfilescreate.UZipCreateFiles(); //}
/// /// 获取所有文件 /// /// private Hashtable getAllFies() { Hashtable FilesList = new Hashtable(); DirectoryInfo fileDire = new DirectoryInfo(this.filesdirectorypath); if (!fileDire.Exists) { throw new System.IO.FileNotFoundException("目录:" + fileDire.FullName + "没有找到!"); } this.dirnamelength = fileDire.Name.Length; this.getAllDirFiles(fileDire, FilesList); this.getAllDirsFiles(fileDire.GetDirectories(), FilesList); return FilesList; } /// /// 获取一个文件夹下的所有文件夹里的文件 /// private void getAllDirsFiles(DirectoryInfo[] dirs, Hashtable filesList) { foreach (DirectoryInfo dir in dirs) { foreach (FileInfo file in dir.GetFiles("*.*")) { filesList.Add(file.FullName, file.LastWriteTime); } this.getAllDirsFiles(dir.GetDirectories(), filesList); } }
//获取一个文件夹下的文件
private void getAllDirFiles(DirectoryInfo dir, Hashtable filesList) { foreach (FileInfo file in dir.GetFiles("*.*")) { filesList.Add(file.FullName, file.LastWriteTime); } } }}
转载于:https://www.cnblogs.com/hengbo/archive/2009/02/21/2232508.html
相关资源:C#压缩整个文件夹里面的文件