如何用C#实现压缩文件
一、前言
在实际项目中,文件的压缩和解压缩是一个经常会用到的功能。本文将介绍如何使用C#语言实现文件的压缩和解压缩功能,以及附带两个示例说明。
二、压缩文件
1. 引入命名空间
首先需要引入System.IO.Compression和System.IO.Compression.FileSystem这两个命名空间。其中,System.IO.Compression命名空间包含了DeflateStream和GZipStream两种不同的压缩流。而System.IO.Compression.FileSystem命名空间则用于压缩和解压缩文件和文件夹。
using System.IO.Compression;
using System.IO.Compression.FileSystem;
2. 压缩文件
假设我们需要将"D:\test.txt"这个文件压缩到"D:\test.zip"。
string sourcePath = @"D:\test.txt";
string destPath = @"D:\test.zip";
using (FileStream sourceStream = new FileStream(sourcePath, FileMode.OpenOrCreate))
{
using (FileStream destStream = new FileStream(destPath, FileMode.OpenOrCreate))
{
using (GZipStream compressionStream = new GZipStream(destStream, CompressionMode.Compress))
{
sourceStream.CopyTo(compressionStream);
}
}
}
这里使用GZipStream进行压缩,指定输出流为destStream,压缩模式为CompressionMode.Compress。sourceStream.CopyTo(compressionStream)则可以将压缩流复制到输出流中。
3. 压缩文件夹
假设我们需要将"D:\testFolder"文件夹压缩到"D:\testFolder.zip"。
string sourcePath = @"D:\testFolder";
string destPath = @"D:\testFolder.zip";
ZipFile.CreateFromDirectory(sourcePath, destPath);
这里使用ZipFile.CreateFromDirectory方法进行压缩,第一个参数指定源文件夹路径,第二个参数指定目标文件路径。ZipArchive类也可以实现类似功能。
三、解压缩文件
1. 解压缩文件
假设我们需要将"D:\test.zip"这个文件解压缩到"D:\test.txt"。
string sourcePath = @"D:\test.zip";
string destPath = @"D:\test.txt";
using (FileStream sourceStream = new FileStream(sourcePath, FileMode.OpenOrCreate))
{
using (FileStream destStream = new FileStream(destPath, FileMode.OpenOrCreate))
{
using (GZipStream decompressionStream = new GZipStream(sourceStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(destStream);
}
}
}
这里使用GZipStream进行解压缩,指定输入流为sourceStream,解压缩模式为CompressionMode.Decompress。decompressionStream.CopyTo(destStream)则可以将解压流复制到输出流中。
2. 解压缩文件夹
假设我们需要将"D:\testFolder.zip"文件夹解压缩到"D:\testFolder"。
string sourcePath = @"D:\testFolder.zip";
string destPath = @"D:\testFolder";
ZipFile.ExtractToDirectory(sourcePath, destPath);
这里使用ZipFile.ExtractToDirectory方法进行解压缩,第一个参数指定源文件路径,第二个参数指定目标文件夹路径。ZipArchive类也可以实现类似功能。
四、示例说明
1. 压缩文件
假设我们需要将一个文本文件压缩为压缩文件。文件路径为"D:\file.txt",压缩后的文件路径为"D:\file.zip"。可以按照下面的方法进行压缩:
string sourcePath = @"D:\file.txt";
string destPath = @"D:\file.zip";
using (FileStream sourceStream = new FileStream(sourcePath, FileMode.OpenOrCreate))
{
using (FileStream destStream = new FileStream(destPath, FileMode.OpenOrCreate))
{
using (GZipStream compressionStream = new GZipStream(destStream, CompressionMode.Compress))
{
sourceStream.CopyTo(compressionStream);
}
}
}
2. 解压缩文件
假设我们需要将一个压缩文件解压缩为文本文件。文件路径为"D:\file.zip",解压后的文件路径为"D:\file.txt"。可以按照下面的方法进行解压缩:
string sourcePath = @"D:\file.zip";
string destPath = @"D:\file.txt";
using (FileStream sourceStream = new FileStream(sourcePath, FileMode.OpenOrCreate))
{
using (FileStream destStream = new FileStream(destPath, FileMode.OpenOrCreate))
{
using (GZipStream decompressionStream = new GZipStream(sourceStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(destStream);
}
}
}
以上是两个示例说明,可以根据实际需求进行修改。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用C#实现压缩文件 - Python技术站