天天看點

C#如何壓縮與解壓縮檔案

C#如何壓縮與解壓縮檔案

首先在網上下載下傳開源的sharpziplib.dll動态連結庫,将其裝入你的項目,這樣你就可以開發自己的壓縮與解壓縮工具了,以下是示例源代碼,敬請參考。

C#如何壓縮與解壓縮檔案

using  System;

C#如何壓縮與解壓縮檔案

using  System.Collections.Generic;

C#如何壓縮與解壓縮檔案

using  System.ComponentModel;

C#如何壓縮與解壓縮檔案

using  System.Data;

C#如何壓縮與解壓縮檔案

using  System.Drawing;

C#如何壓縮與解壓縮檔案

using  System.Text;

C#如何壓縮與解壓縮檔案

using  System.Windows.Forms;

C#如何壓縮與解壓縮檔案

using  System.IO;

C#如何壓縮與解壓縮檔案

using  ICSharpCode.SharpZipLib.Zip;

C#如何壓縮與解壓縮檔案

using  ICSharpCode.SharpZipLib.Checksums;

C#如何壓縮與解壓縮檔案

using  ICSharpCode.SharpZipLib.GZip;

C#如何壓縮與解壓縮檔案

using  ICSharpCode.SharpZipLib.BZip2;

C#如何壓縮與解壓縮檔案

using  ICSharpCode.SharpZipLib.Tar;

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

  public   partial   class  Form1 : Form

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

     ... {

C#如何壓縮與解壓縮檔案

        public Form1()

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            InitializeComponent();

C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        方法#region 方法

C#如何壓縮與解壓縮檔案

        private void CopyFiles(string varFromDirectory, string varToDirectory) //備份

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            Directory.CreateDirectory(varToDirectory);

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            if (!Directory.Exists(varFromDirectory)) return;

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            string[] directories = Directory.GetDirectories(varFromDirectory);

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            if (directories.Length > 0)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                foreach (string d in directories)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    CopyFiles(d, varToDirectory + d.Substring(d.LastIndexOf("/")));

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            string[] files = Directory.GetFiles(varFromDirectory);

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            if (files.Length > 0)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                foreach (string s in files)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("/")), true);

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        public static void UnZip(string FileToUpZip, string ZipedFolder)//

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            if (!File.Exists(FileToUpZip))

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                return;

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            if (!Directory.Exists(ZipedFolder))

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                Directory.CreateDirectory(ZipedFolder);

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ZipInputStream s = null;

C#如何壓縮與解壓縮檔案

            ZipEntry theEntry = null;

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            string fileName;

C#如何壓縮與解壓縮檔案

            FileStream streamWriter = null;

C#如何壓縮與解壓縮檔案

            try

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                s = new ZipInputStream(File.OpenRead(FileToUpZip));

C#如何壓縮與解壓縮檔案

                while ((theEntry = s.GetNextEntry()) != null)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    if (theEntry.Name != String.Empty)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                    ...{

C#如何壓縮與解壓縮檔案

                        fileName = Path.Combine(ZipedFolder, theEntry.Name);

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                        ///判斷檔案路徑是否是檔案夾

C#如何壓縮與解壓縮檔案

                        if (fileName.EndsWith("/") || fileName.EndsWith("/"))

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                        ...{

C#如何壓縮與解壓縮檔案

                            Directory.CreateDirectory(fileName);

C#如何壓縮與解壓縮檔案

                            continue;

C#如何壓縮與解壓縮檔案

                        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                        streamWriter = File.Create(fileName);

C#如何壓縮與解壓縮檔案

                        int size = 2048;

C#如何壓縮與解壓縮檔案

                        byte[] data = new byte[2048];

C#如何壓縮與解壓縮檔案

                        while (true)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                        ...{

C#如何壓縮與解壓縮檔案

                            size = s.Read(data, 0, data.Length);

C#如何壓縮與解壓縮檔案

                            if (size > 0)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                            ...{

C#如何壓縮與解壓縮檔案

                                streamWriter.Write(data, 0, size);

C#如何壓縮與解壓縮檔案

                            }

C#如何壓縮與解壓縮檔案

                            else

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                            ...{

C#如何壓縮與解壓縮檔案

                                break;

C#如何壓縮與解壓縮檔案

                            }

C#如何壓縮與解壓縮檔案

                        }

C#如何壓縮與解壓縮檔案

                    }

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

            finally

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                if (streamWriter != null)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    streamWriter.Close();

C#如何壓縮與解壓縮檔案

                    streamWriter = null;

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

                if (theEntry != null)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    theEntry = null;

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

                if (s != null)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    s.Close();

C#如何壓縮與解壓縮檔案

                    s = null;

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

                GC.Collect();

C#如何壓縮與解壓縮檔案

                GC.Collect(1);

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)//壓縮

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            //如果檔案沒有找到,則報錯 

C#如何壓縮與解壓縮檔案

            if (!System.IO.File.Exists(FileToZip))

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                throw new System.IO.FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd");

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

            System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);

C#如何壓縮與解壓縮檔案

            System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);

C#如何壓縮與解壓縮檔案

            ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);

C#如何壓縮與解壓縮檔案

            ZipEntry ZipEntry = new ZipEntry("ZippedFile");

C#如何壓縮與解壓縮檔案

            ZipStream.PutNextEntry(ZipEntry);

C#如何壓縮與解壓縮檔案

            ZipStream.SetLevel(CompressionLevel);

C#如何壓縮與解壓縮檔案

            byte[] buffer = new byte[BlockSize];

C#如何壓縮與解壓縮檔案

            System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);

C#如何壓縮與解壓縮檔案

            ZipStream.Write(buffer, 0, size);

C#如何壓縮與解壓縮檔案

            try

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                while (size < StreamToZip.Length)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{

C#如何壓縮與解壓縮檔案

                    int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);

C#如何壓縮與解壓縮檔案

                    ZipStream.Write(buffer, 0, sizeRead);

C#如何壓縮與解壓縮檔案

                    size += sizeRead;

C#如何壓縮與解壓縮檔案

                }

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

            catch (System.Exception ex)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

            ...{

C#如何壓縮與解壓縮檔案

                throw ex;

C#如何壓縮與解壓縮檔案

            }

C#如何壓縮與解壓縮檔案

            ZipStream.Finish();

C#如何壓縮與解壓縮檔案

            ZipStream.Close();

C#如何壓縮與解壓縮檔案

            StreamToZip.Close();

C#如何壓縮與解壓縮檔案

        } 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

    public void ZipFileMain(string[] args) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

      ...{ 

C#如何壓縮與解壓縮檔案

   string[] filenames = Directory.GetFiles(args[0]); 

C#如何壓縮與解壓縮檔案

   Crc32 crc = new Crc32(); 

C#如何壓縮與解壓縮檔案

   ZipOutputStream s = new ZipOutputStream(File.Create(args[1])); 

C#如何壓縮與解壓縮檔案

   s.SetLevel(6); // 0 - store only to 9 - means best compression 

C#如何壓縮與解壓縮檔案

   foreach (string file in filenames) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

   ...{ 

C#如何壓縮與解壓縮檔案

    //打開壓縮檔案 

C#如何壓縮與解壓縮檔案

    FileStream fs = File.OpenRead(file); 

C#如何壓縮與解壓縮檔案

    byte[] buffer = new byte[fs.Length]; 

C#如何壓縮與解壓縮檔案

    fs.Read(buffer, 0, buffer.Length); 

C#如何壓縮與解壓縮檔案

    ZipEntry entry = new ZipEntry(file); 

C#如何壓縮與解壓縮檔案

    entry.DateTime = DateTime.Now; 

C#如何壓縮與解壓縮檔案

    entry.Size = fs.Length; 

C#如何壓縮與解壓縮檔案

    fs.Close(); 

C#如何壓縮與解壓縮檔案

    crc.Reset(); 

C#如何壓縮與解壓縮檔案

    crc.Update(buffer); 

C#如何壓縮與解壓縮檔案

    entry.Crc = crc.Value; 

C#如何壓縮與解壓縮檔案

    s.PutNextEntry(entry); 

C#如何壓縮與解壓縮檔案

    s.Write(buffer, 0, buffer.Length); 

C#如何壓縮與解壓縮檔案

      } 

C#如何壓縮與解壓縮檔案

   s.Finish(); 

C#如何壓縮與解壓縮檔案

   s.Close(); 

C#如何壓縮與解壓縮檔案

  }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

   public void UnZip(string[] args)//解壓

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

     ...{ 

C#如何壓縮與解壓縮檔案

    ZipInputStream s = new ZipInputStream(File.OpenRead(args[0])); 

C#如何壓縮與解壓縮檔案

     ZipEntry theEntry; 

C#如何壓縮與解壓縮檔案

     while ((theEntry = s.GetNextEntry()) != null) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

         ...{ 

C#如何壓縮與解壓縮檔案

        string directoryName = Path.GetDirectoryName(args[1]); 

C#如何壓縮與解壓縮檔案

         string fileName = Path.GetFileName(theEntry.Name); 

C#如何壓縮與解壓縮檔案

            //生成解壓目錄 

C#如何壓縮與解壓縮檔案

            Directory.CreateDirectory(directoryName); 

C#如何壓縮與解壓縮檔案

            if (fileName != String.Empty) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

              ...{ 

C#如何壓縮與解壓縮檔案

                 //解壓檔案到指定的目錄 

C#如何壓縮與解壓縮檔案

                 FileStream streamWriter = File.Create( args[1] + fileName );

C#如何壓縮與解壓縮檔案

             int size = 2048; 

C#如何壓縮與解壓縮檔案

             byte[] data = new byte[2048]; 

C#如何壓縮與解壓縮檔案

             while (true) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                 ...{ 

C#如何壓縮與解壓縮檔案

             size = s.Read(data, 0, data.Length); 

C#如何壓縮與解壓縮檔案

                if (size > 0) 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                 ...{ 

C#如何壓縮與解壓縮檔案

                 streamWriter.Write(data, 0, size); 

C#如何壓縮與解壓縮檔案

                 } 

C#如何壓縮與解壓縮檔案

             else 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

                ...{ 

C#如何壓縮與解壓縮檔案

                     break; 

C#如何壓縮與解壓縮檔案

                } 

C#如何壓縮與解壓縮檔案

            } 

C#如何壓縮與解壓縮檔案

     streamWriter.Close(); 

C#如何壓縮與解壓縮檔案

    } 

C#如何壓縮與解壓縮檔案

   } 

C#如何壓縮與解壓縮檔案

   s.Close(); 

C#如何壓縮與解壓縮檔案

  } 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        #endregion

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        private void button1_Click(object sender, EventArgs e)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            CopyFiles(@"D:圖示TecSmart", @"C:photo");

C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        private void btnzip_Click(object sender, EventArgs e)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            string[] FileProperties = new string[2];

C#如何壓縮與解壓縮檔案

            FileProperties[0] = @"D:圖示TecSmart";//待壓縮檔案目錄 

C#如何壓縮與解壓縮檔案

            FileProperties[1] = @"E:DBd.zip"; //壓縮後的目标檔案 ,E盤中須有DB檔案夾

C#如何壓縮與解壓縮檔案

            ZipFileMain(FileProperties); 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        private void btnunzip_Click(object sender, EventArgs e)

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        ...{

C#如何壓縮與解壓縮檔案

            string[] FileProperties = new string[2];

C#如何壓縮與解壓縮檔案

            FileProperties[0] = @"E:DBd.zip";//待解壓的檔案 

C#如何壓縮與解壓縮檔案

            FileProperties[1] = "E:/DB/DataSet/";//解壓後放置的目标目錄 

C#如何壓縮與解壓縮檔案

            UnZip(FileProperties); 

C#如何壓縮與解壓縮檔案
C#如何壓縮與解壓縮檔案

        }

C#如何壓縮與解壓縮檔案

    }

C#如何壓縮與解壓縮檔案