.NET中的zip的壓縮和解壓
在.NET可以透過多種方式實現的zip的壓縮和解壓:1,使用System.IO.Packaging程式; 2,使用第三方類別庫; 3,透過System.IO.Compression命名空間中新增的ZipArchive ,的ZipFile類等實現
一,使用System.IO.Packaging程序壓縮和解壓
包為一個抽象類,可用於將對象組織到定義的物理格式的單個實體中,從而實現高效性與存取.ZIP檔案是包的主物理格式。其他套餐實作可以使用其他物理格式(如XML文檔,資料庫或Web服務。與文件系統類似,在分層組織的資料夾和文件中引用包中包含的項目。雖然包裝是抽象類,但Package.Open方法預設使用ZipPackage衍生類別。
///新增一個資料夾及其子資料夾一個包沿著
/// 摘要>
/// 建立套件 param>
/// 覆蓋exsisitng檔案 param> PackageFolder(字串資料夾名,字串compressedFileName,布林overrideExisting)
{
FOLDERNAME = folderName.Remove(folderName.Length - 1);
布林結果= FALSE;
如果(Directory.Exists(文件夾名)!)
{
返回結果;
}
(!overrideExisting && File.Exists(compressedFileName))如果
{
返回結果;
}
嘗試
{
使用(套餐包= Package.Open(compressedFileName,FileMode.Create))
{
“*”,SearchOption.AllDirectories);
的foreach(在的fileList字串檔案名稱)
{
//包中的路徑是所有文件夾名後的子文件夾
弦pathInPackage;
pathInPackage = Path.GetDirectoryName(文件名).Replace(文件夾名,的String.Empty)+“/”+ Path.GetFileName(檔案名稱);
烏里partUriDocument = PackUriHelper.CreatePartUri(新的URI(pathInPackage,UriKind.Relative));
的PackagePart packagePartDocument = package.CreatePart(partUriDocument,“”,CompressionOption.Maximum);
使用(的FileStream FILESTREAM =新的FileStream (檔案名稱,FileMode.Open,FileAccess.Read))
fileStream.CopyTo(packagePartDocument.GetStream());
} }
}
上(例外)
{
拋出新的例外(「錯誤荏蓒文件夾」資料夾名稱+,E);
}
}
2,且將單一檔案加入壓縮檔案中
的程式碼///
///壓縮檔案成ZIP檔案作為容器店
/// 摘要>
=“compressedFileName” >歸檔檔案 param>
/// 覆寫現有檔案 param>
compressedFileName,布林overrideExisting)
{
布林結果= FALSE; )
{
返回結果;
}
(!overrideExisting && File.Exists(compressedFileName))如果
{
返回結果;
}
嘗試
{
烏里partUriDocument = PackUriHelper.CreatePartUri(新的URI(Path .GetFileName(檔案名稱),UriKind.Relative));
使用(套餐包= Package.Open(compressedFileName,FileMode.OpenOrCreate))
{ Document))
{
}
partUriDocument,“”,CompressionOption.Maximum);
{
}
}
{
為新的例外(「錯誤壓縮與解文件」+檔案名,E);
回傳結果;
} 3,且壓縮文件解壓縮
代碼///
///提取物的容器郵編。附註:容器必須建立為開放式打包約定(OPC)規格
/// 摘要>
/// 包裝檔案 param>
/// 覆現有檔案 param>
檔案夾名,字串compressedFileName,布林overrideExisting)
{
{
若的(File.Exists(compressedFileName)!) 回傳結果;
}
DirectoryInfo的(資料夾名稱);
與(!directoryInfo.Exists)
directoryInfo.Create();
使用(套餐包= Package.Open(compressedFileName,FileMode.Open,FileAccess.Read))
{
的foreach(的PackagePart的PackagePart在package.GetParts())
{
ExtractPart(的PackagePart,文件夾名,overrideExisting);
} 結果=真;
}
拋出新的例外(「錯誤解壓縮檔案」+ compressedFileName,E);
}
靜態無效ExtractPart(的PackagePart的PackagePart,在串targetdirectory中,布林overrideExisting)
{ p. Part.Uri.ToString())更換('\','/')。
如果(Directory.Exists(Path.GetDirectoryName(stringPart))!)
若(!overrideExisting && File.Exists(stringPart))
的FileStream FILESTREAM =新的FileStream(stringPart,FileMode.Create))
{
Sharp
代碼
“DLL”的ContentType =“應用程式/八位元組-stream“/>
類型>同樣,如果壓縮檔案不包含[內容]的.xml文件,或者[內容]的.xml檔案不包含所對應副檔名的描述(手動新增的[內容]的.xml也是可以) ,將無法解壓縮檔案。二,使用第三方類別庫壓縮的壓縮和解壓使用比較的有SharpZipLib和DotNetZip。
1,SharpZipLib,也稱為“#ziplib”,基於GPL開源,支援ZIP,GZIP在內焦油和BZip2壓縮的壓縮和解壓縮。
支援.NET 1.1,.NET 2.0(3.5,4.0)。
(1)ZIP壓縮
Codepublic靜態無效的郵編(字串SRCFILE,串聯DstFile,INT緩衝區大小)
{
的FileStream fileStreamOut =新的FileStream
(DstFile,FileMode.Create,FileAccess.Write);
ZipOutputStream zipOutStream =新ZipOutumStream(StreamOut);入門的ZipEntry =新的ZipEntry(Path.GetFileName(SRCFILE));
zipOutStream.PutNextEntry(輸入);
INT fileStreamIn.Read(緩衝,0,buffer.Length);
zipOutStream .Write(緩衝液,0,大小);
}而(大小> 0);
zipOutStream.Close();
fileStreamOut.Close();的解壓縮(字串SRCFILE,串聯DstFile,INT緩衝區大小)
{
的FileStream fileStreamIn =新的FileStream
(SRCFILE,FileMode.Open,FileAccess.Read);In
(SRCFILE,File ZipEntry的條目= zipInStream.GetNextEntry();
的FileStream fileStreamOut =新的FileStream
(DstFile + @“”+ entry.Name,FileMode.Create,FileAccess.Write); INT 新位元組;
做
{
大小= zipInStream.Read(緩衝,0,buffer.Length) }而(大小> 0 );
zipInStream.Close();
fileStreamOut.Close();
fileStreamIn.Close();
} 2,DotNetLib,是基於「使用比PL」使用元件來比較系統(系統使用比對” ZipFile =新的ZipFile())
{
zip.AddFile(的「readme.txt」);
zip.AddFile(「7440-N09th.
zip.Save(「Archive.zip」);
}(2)解壓縮Codeprivate無效MyExtract()
{
使用(ZIP1使用ZipFile = ZipFile.Read(zipToUnpack))
{
//這裡,且我們擷取的每個項目,但任何條件 的foreach }(ZipEntry的E在ZIP1)
{
}
}
三,且.NET 4.5使用ZipArchive,的ZipFile等類別壓縮和解靜態無效的主要(字符串[] args)
{
ampleuser 萃取物”;
字串NEWFILE = @「C:使用者exampleuser NewFile.txt」
使用(ZipArchive存檔= ZipFile.Open(ZipPath Archive.CreateEntryFromFile(NEWFILE「NewEntry.txt」);
txt」);
ExtractToDirectory(ExtractPath);
}
}

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

如果你是.NET開發者,你必須意識到在交付高品質軟體方面,優化功能和效能的重要性。透過熟練使用提供的資源並減少網站載入時間,你不僅為使用者創造了愉快的體驗,還能減少基礎設施成本。

在高並發請求處理方面,.NETASP.NETCoreWebAPI效能優於JavaSpringMVC,原因包括:AOT提前編譯,減少啟動時間;更精細的記憶體管理,由開發人員負責分配和釋放物件記憶體。

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。
