当前位置:实例文章 » C#开发实例» [文章]C#进行文件的解压和压缩

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

其他信息

其他资源

Top