C# 如何检查.NET 4.5中的ZipArchiveEntry是否已损坏
我正在使用.NET4.5的新和类从Zip包中提取文件 基本上就是这样发生的: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
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实现提取它时。我现在已经切换回,一切正常,异常被抛出。但我希望没有外部库的解决方案更好。