Вопрос по size, dotnetzip, uncompress – Как найти несжатый размер ионного почтового файла

3

У меня есть ZIP-файл, сжатый с помощьюИонная молния, Перед извлечением мне нужно проверить доступное дисковое пространство. Но как мне найти несжатый размер перед рукой? Есть ли в zip-файле какая-либо информация заголовка (по ионному), чтобы я мог ее прочитать?

Ваш Ответ

2   ответа
2
public static long GetTotalUnzippedSize(string zipFileName)
{
    using (ZipArchive zipFile = ZipFile.OpenRead(zipFileName))
    {
        return zipFile.Entries.Sum(entry => entry.Length);
    }
}
Можете ли вы сказать нам, в чем преимущество этого или чем оно отличается от предыдущего ответа? nawfal
По крайней мере, эта версия компилируется и работает правильно :)
8

Это должно сделать трюк:

static long totaluncompressedsize;
static string info;
.
.
.
.

// Option 1
foreach (ZipEntry e in zip)
{
    long uncompressedsize = e.UncompressedSize;
    totaluncompressedsize += uncompressedsize;
}

// Or

// Option 2 - will need to sift through the mass of info        
using (ZipFile zip = ZipFile.Read(zipFile))
{
    info = zip.Info;
}
позвольте мне проверить это .. nawfal
Две вещи: # 1 - итерация каждой записи, поскольку в этом ответе правильный путь. Это не подразумевает полное сканирование zip-файла. Zip содержит метаданные для каждой записи в «центральном каталоге». и во время итерации вы просто просматриваете список объектов, созданных из этих метаданных. Это быстро. # 2. Свойство ZipFile.Info делает то же самое (повторяет записи) и форматирует вывод в виде строки.
Вы можете проверить свойство zip.Info, но это занимает столько же времени и возвращает целую кучу полезной (?) информации.
да, вы правы, доступ к информации собственности полный беспорядок nawfal
спасибо, это сработало ... это тоже довольно быстро ... но я думаю, что может быть более быстрый подход, чем повторение каждой записи. nawfal

Похожие вопросы