C # извлечь файл .zip - PullRequest
       4

C # извлечь файл .zip

0 голосов
/ 06 декабря 2018

Для извлечения ZIP-файла я использую:

using (var strm = File.OpenRead(file))
using (ZipArchive a = new ZipArchive(strm))
{
    a.Entries
        .Where(o => o.Name == string.Empty && !Directory.Exists(
            Path.Combine(Application.StartupPath, o.FullName)))
        .ToList()
        .ForEach(o => Directory.CreateDirectory(
            Path.Combine(Application.StartupPath, o.FullName)));

    a.Entries
        .Where(o => o.Name != string.Empty)
        .ToList()
        .ForEach(e => e.ExtractToFile(
            Path.Combine(Application.StartupPath, e.FullName), true));
}

Кроме того, это автоматически создает папки, если они отсутствуют.

Но есть проблема с файлами, которые имеютрасширение .sct .Например.если файл .zip содержит только один файл: QuestLog.sct, возникает проблема.

screenshot

Файл с именем desktop.ini априори содержится в файле .zip дляизвлечь, но проблема в том, что этот файл не существует.

screenshot

Это создает сообщение об ошибке, поскольку он пытается извлечь файл, который не существует.Поэтому я хочу знать, если есть возможность избавиться от этой проблемы, например, путем внесения изменений в код C #, который не может попытаться извлечь файл desktop.ini.

Эта проблема не являетсяотсутствует с другими .sct файлами.

Я не понимаю, что происходит.

...