有没有办法确定文件是否可以作为System.IO.Packaging.Package打开?

时间:2017-09-12 23:38:49

标签: c# .net file stream system.io.packaging

如果我有文件路径或流,是否有一个静态方法我可以用来确定文件/流是否是一个包,而不是尝试在文件/流上使用Package.Open并捕获{ {1}}?

1 个答案:

答案 0 :(得分:3)

您可以尝试以.zip文件的形式打开文件,然后查找元数据(从而实现验证包格式的软件包规范的一部分),或者只使用Open()并抓住任何潜力例外。 (.docx / .xlsx / etc.格式只是遵循特定结构的ZIP文件。)

您可以尝试阅读ZIP标题,但这只会验证该文件是否为ZIP文件 - 我不确定这会为您带来多少(如果有的话)。

我的猜测是尝试打开文件并捕获异常是最简单的方法 - 如果规范更改,您的代码将继续工作。如果您使用自己的代码来验证文件格式,则必须继续维护它。