7zip壓縮處理 7zip壓縮處理
  .NET       ez      2011-11-30

SevenZipSharp 下載:http://sevenzipsharp.codeplex.com/ 或 SevenZipSharp

using System;
using System.IO;
using System.Threading;
using SevenZip;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string ApplicationBase = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

            //壓縮檔案
            {
                string zip_name = Path.Combine(ApplicationBase, "test.7z");
                string dir_route = Path.Combine(ApplicationBase, "test");
                SevenZipCompressor sz = new SevenZipCompressor();
                sz.ArchiveFormat = OutArchiveFormat.SevenZip;
                sz.CompressionLevel = CompressionLevel.Ultra;
                sz.CompressDirectory(dir_route, zip_name);
            }

            //壓縮檔案並顯示進度
            {
                string zip_name = Path.Combine(ApplicationBase, "test1.7z");
                string dir_route = Path.Combine(ApplicationBase, "test");
                Thread t = new Thread(() =>
                {
                    SevenZipCompressor tmp = new SevenZipCompressor();
                    tmp.FileCompressionStarted += new EventHandler<FileNameEventArgs>((s, e) =>
                    {
                        Console.WriteLine(String.Format("[{0}%] {1}", e.PercentDone, e.FileName));
                    });
                    tmp.CompressionFinished += new EventHandler<EventArgs>((s, e) =>
                    {
                        Console.WriteLine("壓縮完成");
                    });
                    tmp.CompressDirectory(dir_route, zip_name);
                });
                t.Start();
                t.Join();
            }

            //解壓縮檔案(全部)
            {
                string zip_name = Path.Combine(ApplicationBase, "test.7z");
                string dir_route = Path.Combine(ApplicationBase, "test1");
                using (SevenZipExtractor tmp = new SevenZipExtractor(zip_name))
                {
                    tmp.ExtractArchive(dir_route);
                }
            }

            //解壓縮檔案並顯示進度
            {
                string zip_name = Path.Combine(ApplicationBase, "test.7z");
                string dir_route = Path.Combine(ApplicationBase, "test2");
                Thread t = new Thread(() => {
                    using (SevenZipExtractor tmp = new SevenZipExtractor(zip_name))
                    {
                        tmp.FileExtractionStarted += new EventHandler<FileInfoEventArgs>((s, e) =>
                        {
                            Console.WriteLine(String.Format("[{0}%] {1}", e.PercentDone, e.FileInfo.FileName));
                        });
                        tmp.ExtractionFinished += new EventHandler<EventArgs>((s, e) =>
                        {
                            Console.WriteLine("完成解壓縮");
                        });
                        tmp.ExtractArchive(dir_route);
                    }
                });
                t.Start();
                t.Join();
            }

            //列出壓縮檔內容
            {
                string zip_name = Path.Combine(ApplicationBase, "test.7z");
                using (SevenZipExtractor tmp = new SevenZipExtractor(zip_name))
                {
                    for (int i = 0; i < tmp.ArchiveFileData.Count; i++)
                    {
                        Console.WriteLine(tmp.ArchiveFileData[i].FileName.ToString());
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

 


標籤:   .NET

我要留言