Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查.NET 4.5中的ZipArchiveEntry是否已损坏_C#_.net_Wpf_Zip_.net 4.5 - Fatal编程技术网

C# 如何检查.NET 4.5中的ZipArchiveEntry是否已损坏

C# 如何检查.NET 4.5中的ZipArchiveEntry是否已损坏,c#,.net,wpf,zip,.net-4.5,C#,.net,Wpf,Zip,.net 4.5,我正在使用.NET4.5的新和类从Zip包中提取文件 基本上就是这样发生的: try { using (var archive = ZipFile.OpenRead(filename)) { foreach (var entry in archive.Entries) { // Check if file should be extracted ... entry.Extra

我正在使用.NET4.5的新和类从Zip包中提取文件

基本上就是这样发生的:

try {
    using (var archive = ZipFile.OpenRead(filename))
    {
        foreach (var entry in archive.Entries)
        {
            // Check if file should be extracted
            ...

            entry.ExtractToFile(@"C:\Test\" + entry.FullName, true)
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show("Unzipping error: " + ex.Message);
}
当我尝试用标准Windows资源管理器解压此文件时,请全部解压缩。。。命令或使用7zip时,我总是收到预期的错误,因为我为了测试目的使文件损坏,但当我尝试代码时,不会引发异常,所有文件都将解压缩

根据规则,应引发InvalidDataException

ZipFileExtensions.ExtractToDirectory

InvalidDataException

存档中缺少该条目或该条目已损坏,无法删除 阅读 -或-已使用不受支持的压缩方法对条目进行压缩


我做错了什么?或者我如何检查此软件包中的文件是否已损坏?

能否详细说明您是如何使文件损坏的?我在十六进制编辑器中打开了zip文件,并将4个字节更改为随机值。当使用外部工具提取文件时,我得到一些类似文件test.exe的信息,无法提取,因为它已损坏。导出后,成功无误提取的文件是否包含损坏?请注意,我将用于您的输入。ExtractToFile@C:\Test\+entry.FullName,true行。提取的文件不可用,当我使用.NET4.5实现提取它时。我现在已经切换回,一切正常,异常被抛出。但我希望没有外部库的解决方案更好。