SevenZipExtractor 怎么获取数据外包含的额外数据?
时间: 2024-03-13 17:47:02 浏览: 21
要获取 SevenZipExtractor 解压缩后包含的额外数据,你可以使用 `SevenZipArchive.Extracting` 事件。这个事件会在解压缩文件时触发,并提供一个 `SevenZipExtractionEventArgs` 对象,其中包含解压缩过程中的一些信息,包括解压缩的文件名、解压缩进度等。
以下是一个示例代码,演示如何使用 `SevenZipArchive.Extracting` 事件获取额外数据:
```csharp
using SevenZipExtractor;
using System.IO;
string compressedFilePath = @"C:\path\to\compressed\file.7z";
string destinationFolderPath = @"C:\path\to\destination\folder";
using (FileStream compressedFileStream = new FileStream(compressedFilePath, FileMode.Open))
{
using (SevenZipExtractor.SevenZipExtractor extractor = new SevenZipExtractor.SevenZipExtractor(compressedFileStream))
{
// 注册 SevenZipArchive.Extracting 事件处理程序
extractor.Extracting += (sender, e) =>
{
if (e.EventType == SevenZipExtractionEventType.ExtractingFile)
{
// 获取解压缩的文件名和进度
string fileName = e.FileInfo.FileName;
int progress = e.PercentDone;
// 获取文件外包含的额外数据
byte[] extraData = e.FileInfo.ExtraData;
// 在控制台输出信息
Console.WriteLine($"Extracting {fileName}, progress: {progress}%, extra data: {BitConverter.ToString(extraData)}");
}
};
// 解压缩到指定目录
extractor.ExtractArchive(destinationFolderPath);
}
}
```
在这个示例中,我们首先创建一个 `FileStream` 对象,用于打开 7zip 压缩文件。然后,我们创建一个 `SevenZipExtractor` 对象,并将 `FileStream` 对象传递给它。接下来,我们注册 `SevenZipArchive.Extracting` 事件处理程序,当解压缩文件时触发该事件。在事件处理程序中,我们使用 `SevenZipExtractionEventArgs.FileInfo.ExtraData` 属性获取文件外包含的额外数据。
需要注意的是,额外数据的格式和内容是由压缩文件的创建者决定的。因此,在实际使用过程中,你需要根据具体情况解析和处理额外数据。