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

當(dāng)前位置:首頁 > 科技  > 軟件

.NET使用原生方法實(shí)現(xiàn)文件壓縮和解壓

來源: 責(zé)編: 時(shí)間:2024-06-20 15:22:56 155觀看
導(dǎo)讀前言在.NET中實(shí)現(xiàn)文件或文件目錄壓縮和解壓可以通過多種方式來完成,包括使用原生方法(System.IO.Compression命名空間中的類)和第三方庫(如:SharpZipLib、SharpCompress、K4os.Compression.LZ4等)。本文我們主要講的是如何

前言

在.NET中實(shí)現(xiàn)文件或文件目錄壓縮和解壓可以通過多種方式來完成,包括使用原生方法(System.IO.Compression命名空間中的類)和第三方庫(如:SharpZipLib、SharpCompress、K4os.Compression.LZ4等)。本文我們主要講的是如何使用.NET原生方法System.IO.Compression命名空間中的類來對(duì)文件和文件夾進(jìn)行壓縮或解壓縮(壓縮格式.zip文件格式)。bD628資訊網(wǎng)——每日最新資訊28at.com

System.IO.Compression命名空間

包含為流提供基本壓縮和解壓縮服務(wù)的類。bD628資訊網(wǎng)——每日最新資訊28at.com

包含的類

  • ZipFile:提供創(chuàng)建、解壓縮和打開 zip 存檔的靜態(tài)方法。
  • ZipArchive:表示 Zip 存檔格式中的一個(gè)壓縮文件包。
  • ZipArchiveEntry:表示 zip 檔案中的壓縮文件。
  • DeflateStream:提供使用 Deflate 算法壓縮和解壓縮流的方法和屬性。
  • GZipStream:使用 GZip 數(shù)據(jù)格式規(guī)范提供用于壓縮和解壓縮流的方法和屬性。
  • BrotliStream:使用 Brotli 數(shù)據(jù)格式規(guī)范提供用于壓縮和解壓縮流的方法和屬性。
  • ZipFileExtensions:為 ZipArchive 和 ZipArchiveEntry 類提供擴(kuò)展方法。
  • ZLibStream:提供用于使用 zlib 數(shù)據(jù)格式規(guī)范壓縮和解壓縮流的方法和屬性。

文件壓縮的作用和場(chǎng)景

  • 節(jié)省存儲(chǔ)空間:通過壓縮文件,可以顯著減小文件占用的磁盤空間。
  • 減少網(wǎng)絡(luò)傳輸時(shí)間:在網(wǎng)絡(luò)傳輸文件時(shí),壓縮文件可以減少傳輸時(shí)間,特別是在帶寬受限或者對(duì)傳輸速度有要求的情況下,壓縮文件可以提高傳輸效率。
  • 打包和分發(fā)文件:將多個(gè)文件或文件夾打包成一個(gè)壓縮文件,便于整體傳輸、備份或者分發(fā)。這在軟件發(fā)布、數(shù)據(jù)備份和文件傳輸中經(jīng)常會(huì)用到。
  • 加密和保護(hù)文件:一些壓縮工具支持對(duì)文件進(jìn)行加密,可以保護(hù)文件內(nèi)容不被未經(jīng)授權(quán)的人看到或修改。

CompressionLevel(壓縮級(jí)別)

用來指示壓縮操作是強(qiáng)調(diào)速度還是強(qiáng)調(diào)壓縮大小的值。bD628資訊網(wǎng)——每日最新資訊28at.com

枚舉類型
bD628資訊網(wǎng)——每日最新資訊28at.com

枚舉值
bD628資訊網(wǎng)——每日最新資訊28at.com

作用說明
bD628資訊網(wǎng)——每日最新資訊28at.com

Optimal
bD628資訊網(wǎng)——每日最新資訊28at.com

0
bD628資訊網(wǎng)——每日最新資訊28at.com

壓縮操作應(yīng)以最佳方式平衡壓縮速度和輸出大小。
bD628資訊網(wǎng)——每日最新資訊28at.com

Fastest
bD628資訊網(wǎng)——每日最新資訊28at.com

1
bD628資訊網(wǎng)——每日最新資訊28at.com

即使結(jié)果文件未可選擇性地壓縮,壓縮操作也應(yīng)盡快完成。
bD628資訊網(wǎng)——每日最新資訊28at.com

NoCompression
bD628資訊網(wǎng)——每日最新資訊28at.com

2
bD628資訊網(wǎng)——每日最新資訊28at.com

該文件不應(yīng)執(zhí)行壓縮。
bD628資訊網(wǎng)——每日最新資訊28at.com

SmallestSize
bD628資訊網(wǎng)——每日最新資訊28at.com

3
bD628資訊網(wǎng)——每日最新資訊28at.com

壓縮操作應(yīng)創(chuàng)建盡可能小的輸出,即使該操作需要更長(zhǎng)的時(shí)間才能完成。
bD628資訊網(wǎng)——每日最新資訊28at.com

ZipArchiveMode(Zip歸檔模式)

用來與 zip 存檔條目進(jìn)行交互的值。bD628資訊網(wǎng)——每日最新資訊28at.com

枚舉類型
bD628資訊網(wǎng)——每日最新資訊28at.com

枚舉值
bD628資訊網(wǎng)——每日最新資訊28at.com

作用說明
bD628資訊網(wǎng)——每日最新資訊28at.com

Read
bD628資訊網(wǎng)——每日最新資訊28at.com

0
bD628資訊網(wǎng)——每日最新資訊28at.com

只允許讀取存檔項(xiàng)。
bD628資訊網(wǎng)——每日最新資訊28at.com

Create
bD628資訊網(wǎng)——每日最新資訊28at.com

1
bD628資訊網(wǎng)——每日最新資訊28at.com

只允許創(chuàng)建新的存檔項(xiàng)。
bD628資訊網(wǎng)——每日最新資訊28at.com

Update
bD628資訊網(wǎng)——每日最新資訊28at.com

2
bD628資訊網(wǎng)——每日最新資訊28at.com

允許對(duì)存檔項(xiàng)執(zhí)行讀取和寫入操作。
bD628資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建.NET8控制臺(tái)應(yīng)用

創(chuàng)建名為:FileCompDecompExercise的控制臺(tái)應(yīng)用。bD628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

指定文件壓縮為.zip文件

static void Main(string[] args)        {            var sourceFilePath = @"./MySourceFile.xls"; //指定要壓縮的文件路徑(先創(chuàng)建對(duì)應(yīng).xls文件)            var zipSourceFilePath = @"./OutputFolder/ZipSourceFilePath.zip"; //壓縮后文件存放路徑            //指定文件壓縮為zip文件            CompressZipFile(sourceFilePath, zipSourceFilePath);            Console.WriteLine("操作完成");        }                /// <summary>        /// 指定文件壓縮為zip文件        /// </summary>        /// <param name="sourceFilePath">指定要壓縮的文件路徑</param>        /// <param name="zipFilePath">指定壓縮后的zip文件路徑</param>        public static void CompressZipFile(string sourceFilePath, string zipFilePath)        {            //確保指定的路徑中的目錄存在            DirectoryInfo directoryInfo = new DirectoryInfo(zipFilePath);            if (directoryInfo.Parent != null)            {                directoryInfo = directoryInfo.Parent;            }            if (!directoryInfo.Exists)            {                directoryInfo.Create();            }            // 創(chuàng)建一個(gè)新的 Zip 存檔并向其中添加指定的文件            using (ZipArchive archive = ZipFile.Open(zipFilePath, ZipArchiveMode.Update))            {                archive.CreateEntryFromFile(sourceFilePath, Path.GetFileName(sourceFilePath));            }            Console.WriteLine("文件壓縮完成");        }

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

指定文件夾壓縮為.zip文件

static void Main(string[] args)        {            var sourceDirectory = @"./ZipFileDirectory";//指定壓縮的文件目錄(先在對(duì)應(yīng)位置創(chuàng)建好)            var zipFilePath = @"./OutputFolder/Archive.zip"; //壓縮后文件存放路徑            CompressZipFileDirectory(sourceDirectory, zipFilePath);            Console.WriteLine("操作完成");        }                /// <summary>        /// 指定文件目錄壓縮為zip文件        /// </summary>        /// <param name="sourceDirectory">指定壓縮的文件目錄</param>        /// <param name="zipFilePath">壓縮后文件存放路徑</param>        public static void CompressZipFileDirectory(string sourceDirectory, string zipFilePath)        {            //確保指定的路徑中的目錄存在            DirectoryInfo directoryInfo = new DirectoryInfo(zipFilePath);            if (directoryInfo.Parent != null)            {                directoryInfo = directoryInfo.Parent;            }            if (!directoryInfo.Exists)            {                directoryInfo.Create();            }            //創(chuàng)建一個(gè)新的 .zip 文件并將文件夾內(nèi)容壓縮進(jìn)去            ZipFile.CreateFromDirectory(sourceDirectory, zipFilePath, CompressionLevel.Optimal, false);            Console.WriteLine("文件目錄壓縮完成");        }

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

解壓.zip文件到目標(biāo)文件夾

static void Main(string[] args)        {            var zipFilePath = @"./OutputFolder/Archive.zip"; //壓縮后文件存放路徑            string extractPath = @"./OutputFolder"; // 解壓目標(biāo)文件夾路徑            //解壓.zip文件到目標(biāo)文件夾            ExtractZipFile(zipFilePath, extractPath);            Console.WriteLine("操作完成");        }        /// <summary>        /// 解壓.zip文件到目標(biāo)文件夾        /// </summary>        /// <param name="zipFilePath">要解壓的.zip文件路徑</param>        /// <param name="extractPath">解壓目標(biāo)文件夾路徑</param>        public static void ExtractZipFile(string zipFilePath, string extractPath)        {            if (!Directory.Exists(extractPath))            {                Directory.CreateDirectory(extractPath);            }            // 提取 .zip 文件到指定文件夾            ZipFile.ExtractToDirectory(zipFilePath, extractPath);            Console.WriteLine("文件解壓完成");        }

圖片圖片bD628資訊網(wǎng)——每日最新資訊28at.com

本文示例源碼

https://github.com/YSGStudyHards/DotNetExercises/tree/master/FileCompDecompExercisebD628資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-95164-0.html.NET使用原生方法實(shí)現(xiàn)文件壓縮和解壓

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Apereo CAS SSO單點(diǎn)系統(tǒng)的 OAuth2/OpenID Connect集成問題

下一篇: 哈啰面試:說說Dubbo運(yùn)行原理?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Mate60手機(jī)殼曝光 致敬自己的經(jīng)典設(shè)計(jì)

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來了華為Mate60的第三方手機(jī)殼圖,可以讓我們?cè)谡鏅C(jī)發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 影音體驗(yàn)是真的強(qiáng) 簡(jiǎn)單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 一加首款折疊屏!一加Open渲染圖出爐:罕見單手可握小尺寸

    8月5日消息,此前就有爆料稱,一加首款折疊屏手機(jī)將會(huì)在第三季度上市,如今隨著時(shí)間臨近,新機(jī)的各種消息也開始浮出水面。據(jù)悉,這款新機(jī)將會(huì)被命名為&ldquo;On
  • 企業(yè)采用CRM系統(tǒng)的11個(gè)好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動(dòng),以改善客戶體驗(yàn)和滿意度。  CRM軟件市場(chǎng)規(guī)模如今超過580
  • 學(xué)習(xí)JavaScript的10個(gè)理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門語言的時(shí)候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個(gè)小小的重要功能可以大大改善您網(wǎng)站的用戶體驗(yàn)
  • 一個(gè)注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

    場(chǎng)景碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場(chǎng)景不是很多,沒有必要每個(gè)接口都去考慮并發(fā)高的場(chǎng)景,比如添加住院患者的這個(gè)接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)屏,同時(shí)在快充
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動(dòng)。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top 主站蜘蛛池模板: 盐山县| 吴忠市| 晴隆县| 应城市| 磴口县| 甘德县| 伽师县| 蕉岭县| 涞源县| 芮城县| 通城县| 湘阴县| 包头市| 安仁县| 温泉县| 永年县| 德清县| 南阳市| 广州市| 大竹县| 左贡县| 会宁县| 拜城县| 灵石县| 睢宁县| 绥棱县| 沽源县| 隆德县| 崇仁县| 房山区| 阳曲县| 泊头市| 盐源县| 绍兴市| 东宁县| 沂南县| 淮北市| 保康县| 竹北市| 南丰县| 陇西县|