Re: SharpZipLib и progressbar
От: RomCom Россия  
Дата: 27.10.10 08:56
Оценка:
Здравствуйте, Dan123, Вы писали:

D>Возможно ли прикрутить progressbar к SharpZipLib?

D>Необходимо отобразить общий ход упаковки всех файлов в архив.

примерно так
using (System.IO.FileStream fs = System.IO.File.OpenRead(file))
{
    System.IO.FileInfo fi = new System.IO.FileInfo(file);
    int size_all_files += (int)fi.Length;
    string file_name = System.IO.Path.GetFileName(file);
    ICSharpCode.SharpZipLib.Zip.ZipEntry entry =
        new ICSharpCode.SharpZipLib.Zip.ZipEntry(file_name);
    entry.DateTime = DateTime.Now;
    entry.Size = fs.Length;
    ICSharpCode.SharpZipLib.Zip.ZipOutputStream s = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(
            System.IO.File.Create("arhiv.zip"));
    s.SetLevel(9);
    s.PutNextEntry(entry);
    int sourceBytes;
    do
    {
        sourceBytes = fs.Read(buffer, 0, buffer.Length);
        s.Write(buffer, 0, sourceBytes);
        in_arh_size += sourceBytes;
        //собственно сам вывод прогресса
        panel.Progress("Архивирование {0} (" + file_name + ")", size_all_files, in_arh_size);
    } while (sourceBytes > 0);
    fs.Flush(); fs.Close();
    s.CloseEntry();
    s.Finish(); s.Close();
}