C# 压缩 ZIP文件

it2022-05-09  26

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#压缩整个文件夹里面的文件

最新回复(0)