日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

搞懂C#文件壓縮:SharpZipLib vs. DotNetZip,實用代碼一網打盡!

來源: 責編: 時間:2024-03-20 17:27:43 225觀看
導讀1. SharpZipLib功能:支持ZIP和GZip格式的壓縮和解壓縮。提供了對Tar和BZip2格式的支持。輕量級,易于使用。優點:開源,廣泛使用。靈活性較高,適用于多種壓縮需求。使用實例:using System;using ICSharpCode.SharpZipLib.Zip;

paM28資訊網——每日最新資訊28at.com

1. SharpZipLib

功能:

  • 支持ZIP和GZip格式的壓縮和解壓縮。
  • 提供了對Tar和BZip2格式的支持。
  • 輕量級,易于使用。

優點:

  • 開源,廣泛使用。
  • 靈活性較高,適用于多種壓縮需求。

使用實例:

using System;using ICSharpCode.SharpZipLib.Zip;class Program{    static void Main()    {        string sourceFolder = @"C:/Path/To/Your/Folder";        string zipFile = @"C:/Path/To/Your/Archive.zip";        ZipDirectory(sourceFolder, zipFile);        Console.WriteLine("Compression completed.");        string extractFolder = @"C:/Path/To/Your/Extracted";        UnzipFile(zipFile, extractFolder);        Console.WriteLine("Extraction completed.");    }    static void ZipDirectory(string sourceFolder, string zipFile)    {        using (ZipOutputStream zipStream = new ZipOutputStream(System.IO.File.Create(zipFile)))        {            zipStream.SetLevel(9); // 0 - store only to 9 - means best compression            ZipFolder(sourceFolder, sourceFolder, zipStream);            zipStream.Finish();            zipStream.Close();        }    }    static void ZipFolder(string rootFolder, string currentFolder, ZipOutputStream zipStream)    {        string[] files = System.IO.Directory.GetFiles(currentFolder);        foreach (string file in files)        {            ZipFile(zipStream, currentFolder, file);        }        string[] subFolders = System.IO.Directory.GetDirectories(currentFolder);        foreach (string folder in subFolders)        {            ZipFolder(rootFolder, folder, zipStream);        }    }    static void ZipFile(ZipOutputStream zipStream, string rootFolder, string filePath)    {        byte[] buffer = new byte[4096];        string relativePath = filePath.Substring(rootFolder.Length + 1);        ZipEntry entry = new ZipEntry(relativePath);        zipStream.PutNextEntry(entry);        using (System.IO.FileStream fs = System.IO.File.OpenRead(filePath))        {            int sourceBytes;            do            {                sourceBytes = fs.Read(buffer, 0, buffer.Length);                zipStream.Write(buffer, 0, sourceBytes);            } while (sourceBytes > 0);        }    }    static void UnzipFile(string zipFile, string extractFolder)    {        using (ZipInputStream zipStream = new ZipInputStream(System.IO.File.OpenRead(zipFile)))        {            ZipEntry entry;            while ((entry = zipStream.GetNextEntry()) != null)            {                string entryName = entry.Name;                string fullZipToPath = System.IO.Path.Combine(extractFolder, entryName);                string directoryName = System.IO.Path.GetDirectoryName(fullZipToPath);                if (directoryName.Length > 0)                {                    System.IO.Directory.CreateDirectory(directoryName);                }                if (entry.IsFile)                {                    byte[] buffer = new byte[4096];                    using (System.IO.FileStream streamWriter = System.IO.File.Create(fullZipToPath))                    {                        int sourceBytes;                        do                        {                            sourceBytes = zipStream.Read(buffer, 0, buffer.Length);                            streamWriter.Write(buffer, 0, sourceBytes);                        } while (sourceBytes > 0);                    }                }            }        }    }}

2. DotNetZip

功能:

  • 支持ZIP格式的壓縮和解壓縮。
  • 提供了對多卷和自解壓縮ZIP文件的支持。
  • 具有更簡單的API,易于使用。

優點:

  • 使用方便,簡潔明了。
  • 集成度高,適合快速實現文件壓縮解壓縮功能。

使用實例:

using System;using Ionic.Zip;class Program{    static void Main()    {        string sourceFolder = @"C:/Path/To/Your/Folder";        string zipFile = @"C:/Path/To/Your/Archive.zip";        ZipDirectory(sourceFolder, zipFile);        Console.WriteLine("Compression completed.");        string extractFolder = @"C:/Path/To/Your/Extracted";        UnzipFile(zipFile, extractFolder);        Console.WriteLine("Extraction completed.");    }    static void ZipDirectory(string sourceFolder, string zipFile)    {        using (ZipFile zip = new ZipFile())        {            zip.AddDirectory(sourceFolder);            zip.Save(zipFile);        }    }    static void UnzipFile(string zipFile, string extractFolder)    {        using (ZipFile zip = ZipFile.Read(zipFile))        {            zip.ExtractAll(extractFolder, ExtractExistingFileAction.OverwriteSilently);        }    }}

以上兩個例子都提供了基本的目錄壓縮和解壓縮功能,你可以根據具體需求進行進一步定制。確保在實際項目中進行充分的測試和適當的錯誤處理。paM28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-78147-0.html搞懂C#文件壓縮:SharpZipLib vs. DotNetZip,實用代碼一網打盡!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Go 團隊近兩年在做什么,AI 方面如何發力?

下一篇: 行業機構 SEMI:全球 12 英寸晶圓廠設備投資 2025 年將破千億美元大關

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 文成县| 北川| 榕江县| 唐河县| 虞城县| 阜南县| 余江县| 泽普县| 团风县| 行唐县| 乌恰县| 巴彦淖尔市| 桑植县| 洪洞县| 马鞍山市| 电白县| 和政县| 本溪| 海盐县| 盖州市| 运城市| 盘山县| 库车县| 阿合奇县| 石河子市| 藁城市| 长垣县| 邵武市| 清水河县| 平江县| 双峰县| 娱乐| 方城县| 新营市| 永新县| 花垣县| 汕头市| 新绛县| 绍兴县| 嘉祥县| 泽库县|