亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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è)非常常見的壓縮包格式,本文主要用于說(shuō)明如何使用代碼?文件或文件夾壓縮為?zip壓縮包及其解壓操作,需要的朋友可以參考下

zip 是一個(gè)非常常見的壓縮包格式,本文主要用于說(shuō)明如何使用代碼 文件或文件夾壓縮為 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)建輸出,即使該操作需要更長(zhǎ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í)目錄,然后對(duì)臨時(shí)目錄執(zhí)行了壓縮動(dòng)作,壓縮完成之后又刪除了臨時(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 的壓縮與解壓 就講解完了,有任何不明白的,可以在文章下面評(píng)論或者私信我,歡迎大家積極的討論交流,有興趣的朋友可以關(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#語(yǔ)言主要特性總結(jié)

    C#語(yǔ)言主要特性總結(jié)

    這篇文章主要介紹了C#語(yǔ)言主要特性總結(jié),本文總結(jié)了C#語(yǔ)言的簡(jiǎn)單、現(xiàn)代、面向?qū)ο蟆㈩愋桶踩?、相互兼容性、可伸縮性和可升級(jí)性等幾個(gè)主要特點(diǎn),需要的朋友可以參考下
    2015-02-02
  • 解析美國(guó)東部時(shí)間與北京時(shí)間相互轉(zhuǎn)換的實(shí)現(xiàn)代碼

    解析美國(guó)東部時(shí)間與北京時(shí)間相互轉(zhuǎn)換的實(shí)現(xiàn)代碼

    本篇文章是對(duì)美國(guó)東部時(shí)間與北京時(shí)間相互轉(zhuǎn)換的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • c# WPF中CheckBox樣式的使用總結(jié)

    c# WPF中CheckBox樣式的使用總結(jié)

    這篇文章主要介紹了c# WPF中CheckBox樣式的使用總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#基于FTP協(xié)議的簡(jiǎn)易軟件自動(dòng)升級(jí)程序

    C#基于FTP協(xié)議的簡(jiǎn)易軟件自動(dòng)升級(jí)程序

    這篇文章主要為大家詳細(xì)介紹了C#基于FTP協(xié)議的簡(jiǎn)易軟件自動(dòng)升級(jí)程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C#基于OLEDB獲取Excel文件表結(jié)構(gòu)信息的方法

    C#基于OLEDB獲取Excel文件表結(jié)構(gòu)信息的方法

    這篇文章主要介紹了C#基于OLEDB獲取Excel文件表結(jié)構(gòu)信息的方法,結(jié)合實(shí)例形式分析了OLEDB的調(diào)用及Excel的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#傳值方式實(shí)現(xiàn)不同程序窗體間通信實(shí)例

    C#傳值方式實(shí)現(xiàn)不同程序窗體間通信實(shí)例

    Form2構(gòu)造函數(shù)中接收一個(gè)string類型參數(shù),即Form1中選中行的文本,將Form2的TextBox控件的Text設(shè)置為該string,即完成了Form1向Form2的傳值
    2013-12-12
  • Unity制作圖片字體的方法

    Unity制作圖片字體的方法

    這篇文章主要為大家詳細(xì)介紹了Unity制作圖片字體的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C#實(shí)現(xiàn)桶排序算法的示例代碼

    C#實(shí)現(xiàn)桶排序算法的示例代碼

    桶排序是一種快速且高效的排序算法,通過(guò)將數(shù)據(jù)分配到有序桶中并分別排序,適合均勻分布數(shù)據(jù),它的時(shí)間復(fù)雜度為O(n),但不適合數(shù)據(jù)分布極不均勻或數(shù)據(jù)范圍很大的情況,桶排序算法簡(jiǎn)單、易實(shí)現(xiàn),可調(diào)整桶的大小和數(shù)量以適應(yīng)不同數(shù)據(jù),感興趣的可以了解一下
    2024-10-10
  • c# Winform同一數(shù)據(jù)源多個(gè)控件保持同步

    c# Winform同一數(shù)據(jù)源多個(gè)控件保持同步

    通過(guò)對(duì)控件屬性設(shè)置數(shù)據(jù)源綁定,利用Windows數(shù)據(jù)更改通知這一特性,只要訂閱(設(shè)定綁定)的控件都能接收到數(shù)據(jù)的變化通知。 通過(guò)DataBindings方法實(shí)現(xiàn)雙向數(shù)據(jù)綁定
    2021-06-06
  • 讀取圖片像素的具體實(shí)例

    讀取圖片像素的具體實(shí)例

    C#讀取圖片像素的具體實(shí)例,需要的朋友可以參考一下
    2013-06-06

最新評(píng)論