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

