1
IArchive rar = SharpCompress.Archive.Rar.RarArchive.Open(new FileInfo("ze.rar"), SharpCompress.Common.Options.None);
        rar.WriteToDirectory(Directory.GetCurrentDirectory() + "\\DATA", SharpCompress.Common.ExtractOptions.Overwrite);

上記のコードで rar ファイルを抽出できますが、コンソールで進行状況を表示したいと思います。進行状況を確認するにはどうすればよいですか?

4

2 に答える 2

0

これは、抽出操作の現在のパーセンテージを計算する方法のサンプルを提供する必要があります。IArchive.WriteToDirectory拡張機能の動作を指摘してくれた @MathiasRJessen に感謝します。

IArchive rar = SharpCompress.Archive.Rar.RarArchive.Open(new FileInfo("ze.rar"), SharpCompress.Common.Options.None);
string directory = Path.Combine(Directory.GetCurrentDirectory(), "DATA");

// Calculate the total extraction size.
double totalSize = rar.Entries.Where(e => !e.IsDirectory).Sum(e => e.Size);
long completed = 0;

// Use the same logic for extracting each file like IArchive.WriteToDirectory extension.
foreach (var entry in rar.Entries.Where(e => !e.IsDirectory))
{
    entry.WriteToDirectory(directory, ExtractOptions.Overwrite);

    // Track each individual extraction.
    completed += entry.Size;
    var percentage = completed / totalSize;
    // TODO do something with percentage.
}
于 2016-04-18T01:07:03.620 に答える