Home Backend Development C#.Net Tutorial Compression and decompression of zip in .NET

Compression and decompression of zip in .NET

Dec 19, 2016 pm 04:35 PM
.net

Zip compression and decompression can be achieved in .NET in various ways: 1. Using the System.IO.Packaging program; 2. Using a third-party class library; 3. Through the new ZipArchive in the System.IO.Compression namespace , the ZipFile class and other implementations

1. Use the System.IO.Packaging program to compress and decompress

The package is an abstract class that can be used to organize objects into a single entity in a defined physical format, thereby achieving portability and efficiency Access .ZIP files are the primary physical format of the package. Other package implementations may use other physical formats such as XML documents, databases, or web services. Similar to a file system, items contained in a package are referenced in hierarchically organized folders and files. Although a package is an abstract class, Package.Open The method uses the ZipPackage derived class by default. The System.IO.Packaging program is under the assembly in WindowsBase.dll. You need to add a reference to WindowsBase when using it.

1. Compress the entire folder into a compressed

code ///


                                                                                                                                                                            use using using using              out   ‐           ‐       ‐   ‐   ‐                                              Folder
                                                                                                                                                                                                                    // ///
                 Static Boolean PackageFolder(String folderName, String compressedFileName, Boolean overrideExisting)                                                                                     FOLDERNAME = folderName .Remove(folderName.Length - 1);
       Boolean result = FALSE;
                                                                                                                                                                                                                  If
{回 return results;
}

{
(

如果 = Package.open (compositiondFilename, Filemode.create)
{
varist = Director.enumerateFiles (folder name, "*", Searchoption .AllDirectories);
                                                                                                                                                                                                          . //The path in the package is the subfolder after all the folder names
                                                                                                                                                                                                                                                  . .Replace (folder name, String.Empty) + "/" + Path.GetFileName (file name);
U PARTURIDOCUMENT = PACKURIHELPER.CreateParturi Parturidocment, "", compressionOption.maximum);
(File name, FileMode.Open, FileAccess.Read))
                                                                                                                                                                                          
                                                                         Throws a new exception ("Error in the folder" folder name +, E);
                                                                                                                                                             Code ///
                                                                                                                                                                         Archived file
                                                                                                                                                                 ;/Return & gt;
Static Boolean PackageFile ) {回 Back results;
}

(! Overrideexisting &&File.exists (compressetFilename)) If
{
return results; ATEPARTURI (new URI (PATH .GetFileName (file name), UriKind.Relative));
                                   Use (Package = Package.Open(compressedFileName, FileMode.OpenOrCreate))
                                                                                                                 package.DeletePart(partUriDocument); PARTURIDOCUMENT, "", Compressionoption.maximum); packagePartdocatent.getstream ());
}
} 真 Results = true;
}

(exception 5) {
Throw new abnormalities ("" Error Compression File "+file name, E); Declaze/code /// & lt; Abstract & gt;
/// The container of the extract. Note: The container must be created as an Open Packaging Convention (OPC) specification
                                                                                                                                                                                                   ; >                                                                                                {结果 Back results;
}

} Directoryinfo DirectoryInfo = New Directoryinfo (file folder name);
(! Directoryinfo.exists)directoryInfo.Create();

                                                                                   Using (Package = Package.Open (compressedFileName, FileMode.Open, FileAccess.Read))                                                                                              ​agePart in package.GetParts())
                                                                                                       PackagePart, folder name, overrideExisting);
                                           Catch up (Exception 5)

                                                                                                                                                      String stringPart = targetdirectory + HttpUtility.UrlDecode (packagePart.Uri.ToString()) replacement ('\', '/').

                                                                                                              
                                                                                                                                                     Return FileStream FILESTREAM = new FileStream(stringPart, FileMode.Create))
                                                                                                                                                             FileStream

}
} 包 Using the compressed file to automatically generate [Content] .xml in the compression file, which is used to describe the file format supported by the compressed file to decompress.

Code



 
 
Same , if the compressed file does not contain the .xml file of [Content], or the .xml file of [Content] does not contain the description of the corresponding extension (manually added .xml of [Content] is also possible), the file will not be decompressed. Second, the compression and decompression using third-party library compression include SharpZipLib and DotNetZip.

​​ 1. SharpZipLib, also known as "#ziplib", is based on GPL open source and supports compression and decompression of ZIP, GZIP including tar and BZip2 compression.

Support .NET 1.1, .NET 2.0 (3.5, 4.0).

(1) ZIP compression

Codepublic static invalid zip(String SRCFILE, String DstFile, int buffer size)
{
FileStream fileStreamIn = new FileStream
(SRCFILE, FileMode.Open, FileAccess.Read);
FileStream fileStreamOut = new FileStream
(DstFile, FileMode.Create, FileAccess.Write);
ZipOutputStream zipOutStream = new ZipOutputStream(fileStreamOut);
Bytes[] buffer = new Bytes ;
Entry ZipEntry = new ZipEntry(Path.GetFileName(SRCFILE));
zipOutStream.PutNextEntry(input);
int size;
do
{
size = fileStreamIn.Read(buffer, 0, buffer.Length );
      zipOutStream.Write(buffer, 0, size);
                                                                          zipOutStream.Close();                      zipOutStream.Close(); zipCodepublic static void unzip(String SRCFILE, String DstFile, int buffer size)
{
FileStream fileStreamIn = new FileStream
(SRCFILE, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn) ;
ZipEntry entry = zipInStream.GetNextEntry();
FileStream fileStreamOut = new FileStream
(DstFile + @"" + entry.Name, FileMode.Create, FileAccess.Write);
INT size;
Bytes[] Cushion = new byte & lt; buffer size/& gt;;;

{
size = zipinstream.read And (size> 0);
zipInStream.Close();
fileStreamOut.Close();
fileStreamIn.Close();
} 2. DotNetLib is based on "WS-PL" open source and is relatively simple to use (1) zip code used (zip using ZipFile = new ZipFile())
{
zip.AddFile("readme.txt");
zip.AddFile("7440-N49th.png");
zip.AddFile("2008_Annual_Report" .pdf");
zip.Save("Archive.zip");
} (2) Unzip Codeprivate invalid MyExtract()
{
  String zipToUnpack = "C1P3SML.zip";
  String unpackDirectory = "Unzip the file "; ((Zip1 uses zipfile = zipfile.read (ziptounpack))
{
// here, we can extract each entry, but we can extract
according to the name of the entry name, size, date, and re -examination box state Wait // f Foreach (ZIPENTRY's E in ZIP1) {
E.Extract (unpackdirectory, ExtractionXistingFileAction.overWritesilently); 5 Use Ziparchive, ZipFile and other categories Compression and decompression Code code Static and invalid the main (string []] {
string zippath = @"C: user exampleuseser start.zip"
string extlictpath = @"C: User Exampleuser extract";
String NEWFILE = @"C:User exampleuser NewFile.txt"

                                                                                                                                                                          Use (ZipArchive archive = ZipFile.Open(ZipPath, ZipArchiveMode.Update))                                  ile(NEWFILE "NewEntry.txt");
              Archive. ExtractToDirectory(ExtractPath);
                                  

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the employment prospects of C#? What are the employment prospects of C#? Oct 19, 2023 am 11:02 AM

Whether you are a beginner or an experienced professional, mastering C# will pave the way for your career.

Share several .NET open source AI and LLM related project frameworks Share several .NET open source AI and LLM related project frameworks May 06, 2024 pm 04:43 PM

The development of artificial intelligence (AI) technologies is in full swing today, and they have shown great potential and influence in various fields. Today Dayao will share with you 4 .NET open source AI model LLM related project frameworks, hoping to provide you with some reference. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel is an open source software development kit (SDK) designed to integrate large language models (LLM) such as OpenAI, Azure

.NET performance optimization technology for developers .NET performance optimization technology for developers Sep 12, 2023 am 10:43 AM

If you are a .NET developer, you must be aware of the importance of optimizing functionality and performance in delivering high-quality software. By making expert use of the provided resources and reducing website load times, you not only create a pleasant experience for your users but also reduce infrastructure costs.

Performance differences between Java framework and .NET framework Performance differences between Java framework and .NET framework Jun 03, 2024 am 09:19 AM

In terms of high-concurrency request processing, .NETASP.NETCoreWebAPI performs better than JavaSpringMVC. The reasons include: AOT early compilation, which reduces startup time; more refined memory management, where developers are responsible for allocating and releasing object memory.

C# .NET Interview Questions & Answers: Level Up Your Expertise C# .NET Interview Questions & Answers: Level Up Your Expertise Apr 07, 2025 am 12:01 AM

C#.NET interview questions and answers include basic knowledge, core concepts, and advanced usage. 1) Basic knowledge: C# is an object-oriented language developed by Microsoft and is mainly used in the .NET framework. 2) Core concepts: Delegation and events allow dynamic binding methods, and LINQ provides powerful query functions. 3) Advanced usage: Asynchronous programming improves responsiveness, and expression trees are used for dynamic code construction.

Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Advanced C# .NET Tutorial: Ace Your Next Senior Developer Interview Apr 08, 2025 am 12:06 AM

Interview with C# senior developer requires mastering core knowledge such as asynchronous programming, LINQ, and internal working principles of .NET frameworks. 1. Asynchronous programming simplifies operations through async and await to improve application responsiveness. 2.LINQ operates data in SQL style and pay attention to performance. 3. The CLR of the NET framework manages memory, and garbage collection needs to be used with caution.

C# .NET: Exploring Core Concepts and Programming Fundamentals C# .NET: Exploring Core Concepts and Programming Fundamentals Apr 10, 2025 am 09:32 AM

C# is a modern, object-oriented programming language developed by Microsoft and as part of the .NET framework. 1.C# supports object-oriented programming (OOP), including encapsulation, inheritance and polymorphism. 2. Asynchronous programming in C# is implemented through async and await keywords to improve application responsiveness. 3. Use LINQ to process data collections concisely. 4. Common errors include null reference exceptions and index out-of-range exceptions. Debugging skills include using a debugger and exception handling. 5. Performance optimization includes using StringBuilder and avoiding unnecessary packing and unboxing.

C# Code within .NET: Exploring the Programming Process C# Code within .NET: Exploring the Programming Process Apr 12, 2025 am 12:02 AM

The programming process of C# in .NET includes the following steps: 1) writing C# code, 2) compiling into an intermediate language (IL), and 3) executing by the .NET runtime (CLR). The advantages of C# in .NET are its modern syntax, powerful type system and tight integration with the .NET framework, suitable for various development scenarios from desktop applications to web services.

See all articles