2016年12月28日 星期三

[研究] [C#] 用 SharpZip 0.86.0 做壓縮、解壓縮

[研究] [C#] 用 SharpZip 0.86.0 做壓縮、解壓縮

2016-12-28

官網:
https://icsharpcode.github.io/SharpZipLib/
http://www.icsharpcode.net/OpenSource/SharpZipLib/


SharpZipLib_0860_Bin.zip 解壓後,net-20 目錄下有 ICSharpCode.SharpZipLib.dll 檔案。
把檔案拷貝到 方案目錄,例如 D:\CodeTemp\SharpZipDemo\SharpZipDemo\bin\Debug,加入參考

把 SharpZipLib_0860_SourceSamples.zip 解壓縮, double click  SharpZipAll2008.sln 方案,在 Visual Studio 2015 with Update 3 環境下執行失敗,ICSharpCode.SharpZLib2008.sln 也失敗。

只好自己找範例參考測試,參考這篇

介紹幾款好用的壓縮函示庫:SharpZipLib 與 DotNetZip
http://blog.miniasp.com/post/2009/01/11/Introduce-SharpZipLib-and-DotNetZip-Library-for-NET.aspx

先建立一個方案,加入參考



(下圖) 找到  ICSharpCode.SharpZipLib.dll 檔案


SharpZipDemo.sln 的 Program.cs 內容
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;

namespace SharpZipDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] filenames = Directory.GetFiles(args[0]);
            using (ZipOutputStream s = new ZipOutputStream(File.Create(args[1])))
            {
                s.SetLevel(9); // 0 - store only to 9 - means best compression
                byte[] buffer = new byte[4096];
                foreach (string file in filenames)
                {
                    ZipEntry entry = new ZipEntry(Path.GetFileName(file));
                    entry.DateTime = DateTime.Now;
                    s.PutNextEntry(entry);
                    using (FileStream fs = File.OpenRead(file))
                    {
                        int sourceBytes;
                        do
                        {
                            sourceBytes = fs.Read(buffer, 0, buffer.Length);
                            s.Write(buffer, 0, sourceBytes);
                        } while (sourceBytes > 0);
                    }
                }
                s.Finish();
                s.Close();
            }
        }
    }
}


編譯,執行測試

(完)

相關

介紹幾款好用的壓縮函示庫:SharpZipLib 與 DotNetZip
http://blog.miniasp.com/post/2009/01/11/Introduce-SharpZipLib-and-DotNetZip-Library-for-NET.aspx

C#使用SharpZipLib來完成檔案的壓縮/解壓縮功能
OCT 09 WED 2013
http://einboch.pixnet.net/blog/post/267876083-c%23%E4%BD%BF%E7%94%A8sharpziplib%E4%BE%86%E5%AE%8C%E6%88%90%E6%AA%94%E6%A1%88%E7%9A%84%E5%A3%93%E7%B8%AE-%E8%A7%A3%E5%A3%93%E7%B8%AE%E5%8A%9F%E8%83%BD

[C#.NET] 使用 SharpZipLib 處理壓縮檔案
2013-09-05
https://dotblogs.com.tw/yc421206/archive/2013/09/05/116442.aspx




沒有留言:

張貼留言