C#提取一个.zip文件

时间:2018-12-06 16:24:44

标签: c# zip

为了提取.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

这将创建一条错误消息,因为它尝试提取不存在的文件。因此,我想知道是否有可能摆脱此问题,例如通过更改无法尝试提取文件desktop.ini的C#代码。

其他 .sct 文件不存在此问题。

我不知道会发生什么。

0 个答案:

没有答案