c# - C# 如何检查下载的 zip 存档是否损坏(“找不到中央目录记录结束”异常)
问题描述
我正在使用以下代码从远程共享中打开、解压缩和读取文件:
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 2 << 18))
using (ZipArchive za = new ZipArchive(fs))
{
foreach (ZipArchiveEntry zae in za.Entries)
using (StreamReader sr = new StreamReader(zae.Open(), Encoding.GetEncoding(1251), true, 2 << 18))
{
while (!sr.EndOfStream)
{
// reading logic
}
}
}
如何检查下载的存档是否损坏?
解决方案
解决方案:
bool ValidateZip(FileStream fs)
{
using (BinaryReader br = new BinaryReader(fs))
{
br.BaseStream.Seek(-22, SeekOrigin.End);
return br.ReadUInt32() == 0x06054b50;
}
}
推荐阅读
- python - Fetchmany() 循环写入多个文件
- html - 如何使用 Angular JS 限制 HTML 中的文本框长度
- python-3.x - 打开文本文件时出现错误
- regex - 从单个正则表达式中提取多个变量值
- microservices - 如何使用 Zuul 路由到另一个端口
- android - Android firebase nested-listeners 数据更改问题
- reactjs - 带有redux的Material-UI Snackbar在onClose上失败
- google-app-engine - 如何使用 stdout Go 1.11 记录与跟踪 id 相关的 Stackdriver 日志消息
- rest - Jmeter 错误 - “错误”:“unsupported_grant_type”,“error_description”:“不支持授权类型”
- c# - 如何使边缘更准确?