当前位置: 首页 > news >正文

.NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。

在解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。

其原因是所解压的文件并非 zip 文件。


本文内容

    • 异常
    • 原因

异常

在解压 Zip 文件时出现异常:

System.IO.InvalidDataException: 找不到中央目录结尾记录。
   在 System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()
   在 System.IO.Compression.ZipArchive.Init(Stream stream, ZipArchiveMode mode, Boolean leaveOpen)
   在 System.IO.Compression.ZipArchive..ctor(Stream stream, ZipArchiveMode mode, Boolean leaveOpen, Encoding entryNameEncoding)
   在 System.IO.Compression.ZipFile.Open(String archiveFileName, ZipArchiveMode mode, Encoding entryNameEncoding)
   在 System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName, Encoding entryNameEncoding)
   在 System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName)

原因

如果一个文件并非 zip 文件,那么在解压的时候就会出现此异常。例如,它下载不全,是损坏的;或者,它实际上是一个 rar 文件或者 7z 文件。

验证也非常简单,直接使用其他任何成熟的解压缩工具试着解压以下这个文件就可以。如果其他工具也不能解压,通常说明文件下载不全或者已损坏,或者下载的是一个被重定向了的 html 文件。如果其他工具能够正常解压,说明这可能是其他格式的压缩包,而不是 zip。


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
  • 为什么不应该公开用来同步的加锁对象?为什么不应该 lock(this)/lock(string) 或者 lock 任何非私有对象?
  • WPF 中如何创建忽略 DPI 属性的图片
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • Win32 方法 CreateFile 中选择合适的文件打开模式(CREATE_NEW, CREATE_ALWAYS, OPEN_EXISTING, OPEN_ALWAYS, TRUNCATE_EXI
  • 使用 Kestrel 为你的 ASP.NET Core 服务添加 https 支持
  • 三种方法为 ASP.NET Core 对外服务添加 https 支持(kestrel / frp / nginx)
  • 为 ASP.NET Core 程序制作 URL 的 301/302 跳转
  • 使用 Frp 为你的 Web 服务添加 https 支持
  • 全民 https!使用 FreeSSL 申请免费的 https 证书
  • 如何设置 ASP.NET Core 程序监听的 IP 和端口
  • 收集的 Linux VPS 在线重装系统脚本
  • Linux 系统根目录下的文件夹
  • 修复 Windows 10 设置界面里面混乱的语言翻译
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • ES学习笔记(12)--Symbol
  • JavaScript 基础知识 - 入门篇(一)
  • java概述
  • JS字符串转数字方法总结
  • PHP那些事儿
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 力扣(LeetCode)21
  • 如何使用 JavaScript 解析 URL
  • 世界上最简单的无等待算法(getAndIncrement)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 思考 CSS 架构
  • 用mpvue开发微信小程序
  • 智能合约开发环境搭建及Hello World合约
  • scrapy中间件源码分析及常用中间件大全
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • (12)目标检测_SSD基于pytorch搭建代码
  • (pojstep1.3.1)1017(构造法模拟)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (一一四)第九章编程练习
  • (转)Sql Server 保留几位小数的两种做法
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .form文件_SSM框架文件上传篇
  • .NET 5种线程安全集合
  • .NET CLR基本术语
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 发展历程
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET单元测试
  • .py文件应该怎样打开?
  • @media screen 针对不同移动设备
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [autojs]autojs开关按钮的简单使用
  • [BZOJ 3680]吊打XXX(模拟退火)