最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓

 更新時(shí)間:2022年09月28日 09:05:06   作者:張曉棟  
這篇文章主要介紹了C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓,zip?是一個(gè)非常常見的壓縮包格式,本文主要用于說明如何使用代碼?文件或文件夾壓縮為?zip壓縮包及其解壓操作,需要的朋友可以參考下

zip 是一個(gè)非常常見的壓縮包格式,本文主要用于說明如何使用代碼 文件或文件夾壓縮為 zip壓縮包及其解壓操作,
我們采用的是 微軟官方的實(shí)現(xiàn),所以也不需要安裝第三方的組件包。

使用的時(shí)候記得 using System.IO.Compression;

/// <summary>
/// 將指定目錄壓縮為Zip文件
/// </summary>
/// <param name="folderPath">文件夾地址 D:/1/ </param>
/// <param name="zipPath">zip地址 D:/1.zip </param>
public static void CompressDirectoryZip(string folderPath, string zipPath)
{
    DirectoryInfo directoryInfo = new(zipPath);

    if (directoryInfo.Parent != null)
    {
        directoryInfo = directoryInfo.Parent;
    }

    if (!directoryInfo.Exists)
    {
        directoryInfo.Create();
    }

    ZipFile.CreateFromDirectory(folderPath, zipPath, CompressionLevel.Optimal, false);
}

其中 CompressionLevel 是個(gè)枚舉,支持下面四種類型

枚舉注解
Optimal0壓縮操作應(yīng)以最佳方式平衡壓縮速度和輸出大小。
Fastest1即使結(jié)果文件未可選擇性地壓縮,壓縮操作也應(yīng)盡快完成。
NoCompression2該文件不應(yīng)執(zhí)行壓縮。
SmallestSize3壓縮操作應(yīng)盡可能小地創(chuàng)建輸出,即使該操作需要更長的時(shí)間才能完成。

我方法這里直接固定了采用 CompressionLevel.Optimal,大家可以根據(jù)個(gè)人需求自行調(diào)整。

/// <summary>
/// 將指定文件壓縮為Zip文件
/// </summary>
/// <param name="filePath">文件地址 D:/1.txt </param>
/// <param name="zipPath">zip地址 D:/1.zip </param>
public static void CompressFileZip(string filePath, string zipPath)
{

    FileInfo fileInfo = new FileInfo(filePath);
    string dirPath = fileInfo.DirectoryName?.Replace("\\", "/") + "/";
    string tempPath = dirPath + Guid.NewGuid() + "_temp/";
    if (!Directory.Exists(tempPath))
    {
        Directory.CreateDirectory(tempPath);
    }
    fileInfo.CopyTo(tempPath + fileInfo.Name);
    CompressDirectoryZip(tempPath, zipPath);
    DirectoryInfo directory = new(path);
    if (directory.Exists)
    {
        //將文件夾屬性設(shè)置為普通,如:只讀文件夾設(shè)置為普通
        directory.Attributes = FileAttributes.Normal;

        directory.Delete(true);
    }
}

壓縮單個(gè)文件的邏輯其實(shí)就是先將我們要壓縮的文件復(fù)制到一個(gè)臨時(shí)目錄,然后對臨時(shí)目錄執(zhí)行了壓縮動作,壓縮完成之后又刪除了臨時(shí)目錄。

/// <summary>
/// 解壓Zip文件到指定目錄
/// </summary>
/// <param name="zipPath">zip地址 D:/1.zip</param>
/// <param name="folderPath">文件夾地址 D:/1/</param>
public static void DecompressZip(string zipPath, string folderPath)
{
    DirectoryInfo directoryInfo = new(folderPath);

    if (!directoryInfo.Exists)
    {
        directoryInfo.Create();
    }

    ZipFile.ExtractToDirectory(zipPath, folderPath);
}

至此 C# 使用原生 System.IO.Compression 實(shí)現(xiàn) zip 的壓縮與解壓 就講解完了,有任何不明白的,可以在文章下面評論或者私信我,歡迎大家積極的討論交流,有興趣的朋友可以關(guān)注我目前在維護(hù)的一個(gè) .NET 基礎(chǔ)框架項(xiàng)目,項(xiàng)目地址如下

https://github.com/berkerdong/NetEngine.git

https://gitee.com/berkerdong/NetEngine.git

到此這篇關(guān)于C# 使用原生 System.IO.Compression 實(shí)現(xiàn) zip 的壓縮與解壓的文章就介紹到這了,更多相關(guān)C# 實(shí)現(xiàn) zip 的壓縮與解壓內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中WebBroeser控件用法實(shí)例教程

    C#中WebBroeser控件用法實(shí)例教程

    這篇文章主要介紹了C#中WebBroeser控件用法,包括了常用屬性、事件處理及應(yīng)用實(shí)例,需要的朋友可以參考下
    2014-09-09
  • 帶你復(fù)習(xí)c# 托管和非托管資源

    帶你復(fù)習(xí)c# 托管和非托管資源

    這篇文章主要介紹了c# 托管和非托管資源的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#對文件名智能排序的算法

    C#對文件名智能排序的算法

    這篇文章介紹了C#對文件名智能排序的算法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#套接字(Socket)通信之UDP組播詳解

    C#套接字(Socket)通信之UDP組播詳解

    單播 Unicast是指客戶端與服務(wù)器之間的點(diǎn)到點(diǎn)連接,組播和單播的差別是,必須得有一個(gè)“組”的概念,然后才能進(jìn)行組播,本文就來和大家講講UDP組播的實(shí)現(xiàn)吧
    2023-05-05
  • C#設(shè)計(jì)模式之職責(zé)鏈模式示例詳解

    C#設(shè)計(jì)模式之職責(zé)鏈模式示例詳解

    這篇文章主要給大家介紹了關(guān)于C#設(shè)計(jì)模式之職責(zé)鏈模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C#實(shí)現(xiàn)關(guān)閉其他程序窗口或進(jìn)程代碼分享

    C#實(shí)現(xiàn)關(guān)閉其他程序窗口或進(jìn)程代碼分享

    這篇文章主要介紹了C#實(shí)現(xiàn)關(guān)閉其他程序窗口或進(jìn)程代碼分享,本文給出了兩種方法,并分別給出示例代碼,需要的朋友可以參考下
    2015-06-06
  • C# 中楊輝三角的實(shí)現(xiàn)

    C# 中楊輝三角的實(shí)現(xiàn)

    這篇文章主要介紹了C# 中楊輝三角的實(shí)現(xiàn)的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • C#設(shè)置頁面單位和縮放的方法

    C#設(shè)置頁面單位和縮放的方法

    這篇文章主要介紹了C#設(shè)置頁面單位和縮放的方法,涉及C#設(shè)置頁面屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 如何從dump文件中提取出C#源代碼

    如何從dump文件中提取出C#源代碼

    這篇文章主要介紹了如何從dump文件中提取出C#源代碼,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#實(shí)現(xiàn)文件篩選讀取并翻譯的自動化工具

    C#實(shí)現(xiàn)文件篩選讀取并翻譯的自動化工具

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件篩選及讀取內(nèi)容,并翻譯的自動化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03

最新評論

黄骅市| 绥中县| 周宁县| 长汀县| 鄂托克旗| 田林县| 三明市| 瓮安县| 革吉县| 绍兴市| 丹寨县| 潮州市| 康定县| 海原县| 蒙阴县| 花垣县| 博罗县| 渭源县| 偏关县| 顺平县| 石门县| 佛冈县| 前郭尔| 吉林省| 大理市| 华蓥市| 翁源县| 云浮市| 治多县| 贵州省| 绥滨县| 巨鹿县| 达日县| 广安市| 应用必备| 密云县| 景谷| 扶风县| 合江县| 霍邱县| 探索|