C#进行文件的解压和压缩
发布人:shili8
发布时间:2025-01-28 19:45
阅读次数:0
**C# 中的文件解压和压缩**
在 C# 中,提供了多种方法来进行文件的解压和压缩。下面我们将介绍如何使用 `System.IO.Compression` 命名空间中的类来实现这些功能。
### **1. 使用 GZip 压缩**
GZip 是一种常见的压缩算法,可以用于压缩大型文件。在 C# 中,我们可以使用 `GZipStream` 类来进行 GZip 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class GZipCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (GZipStream outputStream = new GZipStream(File.Create(outputFilePath), CompressionMode.Compress)) { inputStream.CopyTo(outputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (GZipStream outputStream = new GZipStream(File.Create(outputFilePath), CompressionMode.Decompress)) { inputStream.CopyTo(outputStream); } } } }
在上面的代码中,我们定义了一个 `GZipCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 GZip 文件。
### **2. 使用 Zip 压缩**
Zip 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `ZipArchive` 类来进行 Zip 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class ZipCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (ZipArchive outputStream = ZipFile.Open(outputFilePath, ZipArchiveMode.Create)) { outputStream.CreateEntryFromFile(inputFilePath, Path.GetFileName(inputFilePath)); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (ZipArchive inputStream = ZipFile.OpenRead(inputFilePath)) { foreach (ZipArchiveEntry entry in inputStream.Entries) { if (!entry.FullName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)) { entry.ExtractToFile(Path.Combine(outputFilePath, entry.FullName)); } } } } }
在上面的代码中,我们定义了一个 `ZipCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 Zip 文件。
### **3. 使用 Tar 压缩**
Tar 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `TarArchive` 类来进行 Tar 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class TarCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (TarArchive outputStream = TarFile.Open(outputFilePath, TarArchiveMode.Create)) { outputStream.AddEntry(inputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (TarArchive inputStream = TarFile.OpenRead(inputFilePath)) { foreach (TarArchiveEntry entry in inputStream.Entries) { if (!entry.FullName.EndsWith(".tar", StringComparison.OrdinalIgnoreCase)) { entry.ExtractToFile(Path.Combine(outputFilePath, entry.FullName)); } } } } }
在上面的代码中,我们定义了一个 `TarCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 Tar 文件。
### **4. 使用7Zip 压缩**
7Zip 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `SevenZipArchive` 类来进行7Zip 压缩。
csharpusing System; using System.IO; using SevenZip; public class SevenZipCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (SevenZipArchive outputStream = SevenZipFile.Open(outputFilePath, SevenZipArchiveMode.Create)) { outputStream.AddEntry(inputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (SevenZipArchive inputStream = SevenZipFile.OpenRead(inputFilePath)) { foreach (SevenZipArchiveEntry entry in inputStream.Entries) { if (!entry.FullName.EndsWith(".7z", StringComparison.OrdinalIgnoreCase)) { entry.ExtractToFile(Path.Combine(outputFilePath, entry.FullName)); } } } } }
在上面的代码中,我们定义了一个 `SevenZipCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压7Zip 文件。
### **5. 使用 Rar 压缩**
Rar 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `RarArchive` 类来进行 Rar 压缩。
csharpusing System; using System.IO; using Rar; public class RarCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (RarArchive outputStream = RarFile.Open(outputFilePath, RarArchiveMode.Create)) { outputStream.AddEntry(inputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (RarArchive inputStream = RarFile.OpenRead(inputFilePath)) { foreach (RarArchiveEntry entry in inputStream.Entries) { if (!entry.FullName.EndsWith(".rar", StringComparison.OrdinalIgnoreCase)) { entry.ExtractToFile(Path.Combine(outputFilePath, entry.FullName)); } } } } }
在上面的代码中,我们定义了一个 `RarCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 Rar 文件。
### **6. 使用 Brotli 压缩**
Brotli 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `BrotliStream` 类来进行 Brotli 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class BrotliCompressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (BrotliStream outputStream = new BrotliStream(File.Create(outputFilePath), CompressionMode.Compress)) { inputStream.CopyTo(outputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (BrotliStream outputStream = new BrotliStream(File.Create(outputFilePath), CompressionMode.Decompress)) { inputStream.CopyTo(outputStream); } } } }
在上面的代码中,我们定义了一个 `BrotliCompressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 Brotli 文件。
### **7. 使用 LZ4 压缩**
LZ4 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `LZ4Stream` 类来进行 LZ4 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class LZ4Compressor{ public void Compress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (LZ4Stream outputStream = new LZ4Stream(File.Create(outputFilePath), CompressionMode.Compress)) { inputStream.CopyTo(outputStream); } } } public void Decompress(string inputFilePath, string outputFilePath) { using (FileStream inputStream = new FileStream(inputFilePath, FileMode.Open)) { using (LZ4Stream outputStream = new LZ4Stream(File.Create(outputFilePath), CompressionMode.Decompress)) { inputStream.CopyTo(outputStream); } } } }
在上面的代码中,我们定义了一个 `LZ4Compressor` 类,包含两个方法:`Compress` 和 `Decompress`。这两个方法分别用于压缩和解压 LZ4 文件。
### **8. 使用 Zstandard 压缩**
Zstandard 是一种常见的压缩算法,可以用于压缩多个文件。在 C# 中,我们可以使用 `ZstdStream` 类来进行 Zstandard 压缩。
csharpusing System; using System.IO; using System.IO.Compression; public class ZstdCompressor{ public void