ZipArchive
类是 C# 中用于处理 ZIP 文件的类。它提供了一组方法和属性,可以方便地创建、压缩和解压 ZIP 文件。本文将介绍 ZipArchive
类的常用属性和方法,并提供一些示例代码来说明如何使用它们。
除了上述示例中使用的属性和方法外,ZipArchive
类还提供了许多其他有用的属性和方法,以下是一些常用的:
Entries
:获取 ZIP 文件中的所有条目。GetEntry(string entryName)
:根据条目名称获取 ZIP 文件中的条目。CreateEntry(string entryName)
:创建一个 ZIP 文件中的条目。ExtractToDirectory(string destinationDirectoryName)
:将 ZIP 文件中的所有文件和目录解压到指定的目录中。Dispose()
:释放 ZipArchive
对象占用的资源。要创建 ZIP 文件,我们可以使用 ZipArchive
类的构造函数创建一个新的 ZIP 文件。构造函数接受一个 Stream
对象和一个 ZipArchiveMode
枚举值作为参数。我们可以使用 FileStream
或 MemoryStream
来创建 Stream
对象,然后将其传递给构造函数。
C#static void Main(string[] args)
{
string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed.zip";
using (FileStream zipStream = new FileStream(zipFile, FileMode.Create))
{
using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
Console.WriteLine("ZIP file created.");
}
}
}
在上面的示例中,我们指定了要创建的 ZIP 文件的路径 zipFile
。然后,我们使用 FileStream
创建一个新的文件流 zipStream
,并将其传递给 ZipArchive
类的构造函数。我们还指定了 ZipArchiveMode.Create
作为构造函数的第二个参数,以指示我们要创建一个新的 ZIP 文件。在 using
语句块中,我们可以执行其他与 ZIP 文件相关的操作。在这个示例中,我们只是输出一条消息来表示 ZIP 文件已经成功创建。
要压缩整个目录,我们可以使用 ZipFile
类的 CreateFromDirectory
方法。该方法接受三个参数:要压缩的目录的路径、要生成的 ZIP 文件的路径和一个枚举值,用于指定是否包括目录结构。
C#static void Main(string[] args)
{
string sourceDirectory = "D:\\BaiduSyncdisk\\11Test\\CHelpers\\obj";
string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed1.zip";
if(File.Exists(zipFile) )
{
File.Delete(zipFile);
}
ZipFile.CreateFromDirectory(sourceDirectory, zipFile, CompressionLevel.Optimal, false);
Console.WriteLine("Directory compressed.");
}
要解压 ZIP 文件,我们可以使用 ZipFile
类的 ExtractToDirectory
方法。该方法接受两个参数:要解压的 ZIP 文件的路径和要生成的目录的路径。
C#static void Main(string[] args)
{
string extractDirectory = "D:\\BaiduSyncdisk\\11Test\\obj1";
string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed1.zip";
ZipFile.ExtractToDirectory(zipFile, extractDirectory);
Console.WriteLine("ZIP file extracted.");
}
除了压缩和解压整个目录,我们还可以压缩和解压单个文件。要压缩单个文件,我们可以使用 ZipArchive
类的 CreateEntryFromFile
方法。要解压单个文件,我们可以使用 ZipArchiveEntry
类的 ExtractToFile
方法。
C#static void Main(string[] args)
{
string sourceFile = "D:\\BaiduSyncdisk\\11Test\\测试导入数据2.csv";
string zipFile = "D:\\BaiduSyncdisk\\11Test\\compressed3.zip";
string extractFile = "D:\\BaiduSyncdisk\\11Test\\extracted.csv";
using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open))
{
using (FileStream zipStream = new FileStream(zipFile, FileMode.Create))
{
using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
{
ZipArchiveEntry entry = archive.CreateEntry(Path.GetFileName(sourceFile));
using (Stream entryStream = entry.Open())
{
sourceStream.CopyTo(entryStream);
}
}
}
}
using (FileStream zipStream = new FileStream(zipFile, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Read))
{
ZipArchiveEntry entry = archive.GetEntry(Path.GetFileName(sourceFile));
entry.ExtractToFile(extractFile);
}
}
Console.WriteLine("File compressed and extracted.");
}
在上面的示例中,我们首先使用 FileStream
读取源文件 sourceFile
的内容,然后使用 ZipArchive
类创建一个 ZIP 文件,并使用 CreateEntry
方法将源文件的内容添加到 ZIP 文件中。然后,我们使用 FileStream
打开 ZIP 文件,并使用 ZipArchive
类获取 ZIP 文件中的条目,然后使用 ExtractToFile
方法将条目解压到指定的文件中。最后,我们使用 Console.WriteLine
输出一条消息,表示单个文件已经成功压缩和解压。
使用 C# 中的 ZipArchive
类,我们可以轻松地进行 ZIP 文件的压缩和解压操作。本文详细介绍了如何创建 ZIP 文件、压缩整个目录、解压 ZIP 文件以及压缩和解压单个文件的方法。此外,我们还介绍了一些常用的属性和方法,以便更好地理解和使用 ZipArchive
类。根据实际需求和场景,我们可以灵活地使用这些功能来处理 ZIP 文件。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!