2016年8月18日 星期四

【C#】DotNetZip total progress

To Report total progress of extracting instead of each entry's progress.
在解壓縮時回報總進度而不是個別檔案(entry)的進度。

網路上幾乎都是個別檔案的進度,但我只想要知道總進度...最後自己耐著性子一個一個 prop 去看然後研究出來,大致上如下
using (ZipFile zip = new ZipFile(fromPath)) { 
    zip.ExtractProgress += (object sender, ExtractProgressEventArgs e) => {
        if (e.EntriesTotal > e.EntriesExtracted) {
            int percentage = Convert.ToInt32(e.EntriesExtracted / (0.01 * e.EntriesTotal));
            string curEntry = e.CurrentEntry.FileName.Split('/').Last();
            Console.WriteLine($"Extracting {curEntry} {percentage} %");
        }
    };
    zip.ExtractAll(toPath, ExtractExistingFileAction.OverwriteSilently);
}
重點在 if 的離開條件跟百分比用的 prop 是 Entries 的數量而不是 Byte 數。

沒有留言:

張貼留言