C # Как проверить, не поврежден ли загруженный zip-архив (исключение «Конец записи в центральном каталоге не найден») - PullRequest
0 голосов
/ 01 октября 2019

Я открываю, распаковываю и читаю файл с удаленного общего ресурса, используя следующий код:

using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 2 << 18))
using (ZipArchive za = new ZipArchive(fs))
{
    foreach (ZipArchiveEntry zae in za.Entries)
    using (StreamReader sr = new StreamReader(zae.Open(), Encoding.GetEncoding(1251), true, 2 << 18))
    {
        while (!sr.EndOfStream)
        {
            // reading logic
        }
    }
}

Как проверить, не поврежден ли загруженный архив?

1 Ответ

0 голосов
/ 02 октября 2019

Решение:

bool ValidateZip(FileStream fs)
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        br.BaseStream.Seek(-22, SeekOrigin.End);
        return br.ReadUInt32() == 0x06054b50;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...