使用System.IO.Compression验证zip文件

本文关键字:zip 文件 验证 Compression System IO 使用 | 更新日期: 2023-09-27 18:02:30

是否有办法使用System.IO.Compression功能检查文件是否为有效的zip文件?

使用System.IO.Compression验证zip文件

解决方案:使用ZipFile.OpenRead()方法打开zip存档并列出所有条目;如果没有异常发生,那么存档是有效的。
例如:

    public static bool IsZipValid(string path)
    {
        try
        {
            using (var zipFile = ZipFile.OpenRead(path))
            {
                var entries = zipFile.Entries;
                return true;
            }
        }
        catch (InvalidDataException)
        {
            return false;
        }
    }

使用ExtractToDirectory提取ZIP文件,并在InvalidDataException中编写无效ZIP文件的代码。

关于"InvalidDataException" exception:-

sourceArchiveFileName指定的归档文件不是有效的zip归档文件。

或者

存档条目未找到或已损坏。

或者

使用不支持的压缩方法压缩存档条目。

        try
        {
            string startPath = @"c:'example'start";
            string zipPath = @"c:'example'result.zip";
            string extractPath = @"c:'example'extract";
            ZipFile.CreateFromDirectory(startPath, zipPath);
            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
        catch (InvalidDataException ex)
        {
            //Handle invalid zip here
        }