使用 C# 讀取 zip 壓縮包解壓文件的方法及注意事項
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
從 .NET Framework 4.5 版本開始,微軟為 .NET 類庫增加了一個名為 ZipFile 的類型。該類型在 System.IO.Compression 命名空間下,提供創建、解壓縮和打開 zip 存檔的靜態方法。若要在 .NET Framework 應用中使用 ZipFile 類,必須添加對程序集 System.IO.Compression.FileSystem 的引用。 參考鏈接: https://docs.microsoft.com/zh-cn/dotnet/api/system.io.compression.zipfile?view=net-6.0 使用以下代碼讀取壓縮文件內容: 但是,有時候上述代碼會不好用。當遇到一個較大的 zip 文件時可能會報錯: 關于該錯誤,只能搜索到零星的答案,而且大部分都是從國外網站機翻的沒有任何參考價值。 SharpZipLib在 NuGet 上以 zip 為關鍵詞搜索時,排名第二的是一個名為 SharpZipLib 的軟件包。 SharpZipLib :https://www.nuget.org/packages/SharpZipLib/ 示例代碼: 在遇到同樣的 zip 包時,上述代碼沒有報錯,但結果仍是錯誤的:ZipFile 類型有一個名為 Count 的屬性,用于獲取該 zip 包中的文件數量。使用一個包含 95 萬個小文件的壓縮包進行測試時,該屬性的取值卻只有 39866 ,也只能獲取到 39866 個文件。這說明該組件更坑,雖然沒報錯但給了錯誤的數據: 含有 95 萬個文件的 zip 壓縮包。 DotNetZip排名第三的軟件包是:DotNetZip ,也是一個比較流行的類庫。 DotNetZip : https://www.nuget.org/packages/DotNetZip/ 他的用法和微軟自帶類庫的用法相似: 經測試,該類庫在處理上文提到的文件時沒有報錯,且獲得了正確的文件內容。唯一的遺憾是 Read 方法打開文件時耗時較長。 總結在處理 zip 文件時,微軟自帶的類庫能滿足大多數需求。如果遇到報錯的情況,在確認源文件正常的情況下可以更換其他類庫讀取。即使在成功讀取后,也需要核對讀取結果的正確性:沒有報錯,也不代表讀取到的數據就是正確的。 另外,為了加快顯示速度,可以將已經讀取文件的信息存儲到數據庫中,就不需要對zip壓縮包文件再次臨時解壓讀取了。 該文章在 2025/2/13 17:37:09 編輯過 |
關鍵字查詢
相關文章
正在查詢... |