如何获取7-zip压缩文件中已打包文件的大小

6
我使用了 SevenZipSharp,它的 ArchiveFileInfo 结构中有一个 Size 属性,用于“获取或设置文件的大小(未打包)”。
那么,我如何获取归档文件中已打包文件的大小呢?
2个回答

1
很遗憾,似乎SevenZipSharp没有填充这些信息。例如,它如何在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并尝试自己修复它(或搜索已经存在的派生版本)。如果有可能的话。


0
您需要创建一个SevenZipExtractor实例,然后您可以使用其中的属性ArchiveFileData,在那里您可以找到归档文件中每个文件所需的文件信息。
SevenZipExtractor extractor = new SevenZipExtractor(path);
foreach (var file in extractor.ArchiveFileData)
{
    Console.WriteLine("{0} : {1} Bytes", file.FileName, file.Size);
}

这就是我在问题中所说的。ArchiveFileData获取ArchiveFileInfo结构,而Size是未打包文件的大小。我需要压缩文件的大小。 - a1bT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接