2015-12-21 23 views

risposta

0

Devi creare un'istanza di SevenZipExtractor e lì hai la proprietà ArchiveFileData, dove puoi trovare le informazioni di file necessarie per ogni file, che è compresso nel tuo archivio.

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

Questo è quello che ho detto nella domanda. ArchiveFileData ottiene struct ArchiveFileInfo e Size è la dimensione del file decompresso. Ho bisogno della dimensione del file compresso. – a1bT

1

Sfortunatamente sembra che SevenZipSharp non riempia queste informazioni. Ecco per esempio come si riempie dimensioni scompattato in ArchiveFileInfo:

var fileInfo = new ArchiveFileInfo { Index = (int)i }; 
... 
_archive.GetProperty(i, ItemPropId.Size, ref data); 
fileInfo.Size = NativeMethods.SafeCast<ulong>(data, 0); 

ItemPropId enum ha PackedSize proprietà che non viene utilizzato, però, suppongo a causa del fatto che può essere assente (secondo il commento):

/// <summary> 
/// Item packed sise; usually absent 
/// </summary> 
PackedSize, 

Quindi immagino che l'unico modo per ottenerlo sia forgiare SevenZipSharp e provare a risolverlo da solo (o cercare una forcella già esistente). Se è possibile a tutti.

Problemi correlati