我使用了
那么,我如何获取归档文件中已打包文件的大小呢?
SevenZipSharp
,它的 ArchiveFileInfo
结构中有一个 Size 属性,用于“获取或设置文件的大小(未打包)”。那么,我如何获取归档文件中已打包文件的大小呢?
ArchiveFileInfo
中填充解压缩大小:var fileInfo = new ArchiveFileInfo { Index = (int)i };
...
_archive.GetProperty(i, ItemPropId.Size, ref data);
fileInfo.Size = NativeMethods.SafeCast<ulong>(data, 0);
ItemPropId
枚举有一个 PackedSize
属性,但似乎并未使用,我猜测是因为它可能不存在(根据注释):
/// <summary>
/// Item packed sise; usually absent
/// </summary>
PackedSize,
所以我猜想唯一的方法是派生出SevenZipSharp并尝试自己修复它(或搜索已经存在的派生版本)。如果有可能的话。
SevenZipExtractor
实例,然后您可以使用其中的属性ArchiveFileData
,在那里您可以找到归档文件中每个文件所需的文件信息。SevenZipExtractor extractor = new SevenZipExtractor(path);
foreach (var file in extractor.ArchiveFileData)
{
Console.WriteLine("{0} : {1} Bytes", file.FileName, file.Size);
}