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

本文共 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

你可能感兴趣的文章
swagger-editor
查看>>
Groovy与Java集成常见的坑(转)
查看>>
SpringMVC(转)
查看>>
__tostring用法,__call处理调用,__clone克隆对象
查看>>
PHP读取文件
查看>>
免费的区块链学习资料
查看>>
ILSVRC
查看>>
matlab超限像素平滑法_脉冲伏安法理论基础
查看>>
arduino 串口读取字符串_Arduino传感器教程 第24章NRF24L01 控制电舵机
查看>>
状态码202_HTTP状态码(HTTP Status Code)
查看>>
sharepoint 2010 网站集定期备份
查看>>
管理SCCM/MDT中的驱动分类
查看>>
java之HashTable
查看>>
Windows Server 2012体验之配置存储池
查看>>
轻松上手移动互联——百度SiteApp建造日志
查看>>
我从跑步中领悟到了什么?
查看>>
你的权限等于你的可见度
查看>>
Gartner:威胁情报的定义
查看>>
redis多实例重启脚本
查看>>
开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试
查看>>