博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Zip解压缩,规避 [content_types].xml 文件
阅读量:5889 次
发布时间:2019-06-19

本文共 1159 字,大约阅读时间需要 3 分钟。

使用 System.IO.Packaging.Package 进行压缩和解压时,会自动生成 [content_types].xml 文件。

压缩时生成这个其实无所谓,但解压文件时,也必须有这个文件的存在,否则不能解压。这就不能忍了,毕竟不是所有的 Zip 压缩包都会带这个文件的。

怎么解?

System.IO.Compression.ZipFile

最简单的方式,就是使用 System.IO.Compression.ZipFile 这个类,使用方式如下(示例):

///         /// 解压文件,这个方法不需要压缩包中有 [Content_Types].xml 文件。        ///         public static IEnumerable
DecompressFileCompatibly(string target, string outPath) { ZipArchive zipArchive = ZipFile.Open(target, ZipArchiveMode.Read); // 获取所有文件(相对路径) var files = zipArchive.Entries.Select(e => e.FullName).ToList(); // 解压文件 (要求 outPath 不能存在,必须是全新的) zipArchive.ExtractToDirectory(outPath); // 返回的文件列表中,不需要有 [Content_Types].xml 文件。 files.Remove("[Content_Types].xml"); // 最终解压出来的所有文件 var fileList = files.Where(f => { var file = Path.Combine(outPath, f); return File.Exists(file); // 过滤文件夹 }).Select(f => Path.Combine(outPath, f)).ToList(); return fileList; }

其它方式

也可以使用第三方库处理这个问题,如:

参考资料:

转载于:https://www.cnblogs.com/jasongrass/p/10579477.html

你可能感兴趣的文章
MySQL数据库常见管理应用(1)
查看>>
windows驱动里面的问题
查看>>
CUDA实践指南(四)
查看>>
table合并单元格colspan和rowspan
查看>>
IPVS基于应用层任意偏移字段HASH值的负载均衡算法
查看>>
Nginx技术深度剖析(2)
查看>>
部署P2P升级的脚本
查看>>
jenkins--ant持续集成测试build文件脚本 测试报告
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
easyui 只刷新当前页面的数据 datagrid reload 方法
查看>>
58到家完成3亿美金A轮融资 阿里平安等投资
查看>>
Mysql-mmm高可用方案安装及配置
查看>>
【狂人小白】MyBatis.001 学习巴提斯!
查看>>
全面解析C#中参数传递
查看>>
修改注册表防止SYN淹没式攻击
查看>>
WinForm窗体缩放动画
查看>>
Memcached 安装及启动脚本
查看>>
如何删除RMAN的CONFIGURE条目
查看>>
saltstack grains模块自定义
查看>>