2015-12-21 8 views

答えて

0

SevenZipExtractorのインスタンスを作成する必要があります。そこには、ArchiveFileDataというプロパティがあります。そこには、アーカイブに圧縮された各ファイルの必要なファイル情報があります。

SevenZipExtractor extractor = new SevenZipExtractor(path); 
foreach (var file in extractor.ArchiveFileData) 
{ 
    Console.WriteLine("{0} : {1} Bytes", file.FileName, file.Size); 
} 
+0

これは私が質問で言ったことです。 ArchiveFileDataはArchiveFileInfo構造体を取得し、Sizeは展開されたファイルのサイズです。圧縮ファイルのサイズが必要です。 – a1bT

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をフォークし、あなた自身でそれを修正しようとすることです(または既存のフォークを検索する)。それがすべて可能ならば。

関連する問題