当前位置: 首页 > 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 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 03Go 类型总结
  • ES6之路之模块详解
  • github指令
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript-Array类型
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Koa2 之文件上传下载
  • Map集合、散列表、红黑树介绍
  • Redis字符串类型内部编码剖析
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 数组大概知多少
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #define,static,const,三种常量的区别
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (5)STL算法之复制
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Java数据结构)ArrayList
  • (pytorch进阶之路)扩散概率模型
  • (ros//EnvironmentVariables)ros环境变量
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)项目管理杂谈-我所期望的新人
  • (转)一些感悟
  • . Flume面试题
  • .NET : 在VS2008中计算代码度量值
  • .Net 4.0并行库实用性演练
  • .NET 8.0 中有哪些新的变化?
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .Net Remoting(分离服务程序实现) - Part.3