有没有办法确定文件是否可以作为 System.IO.Packaging.Package 打开?
Is there a way to determine whether a file can be opened as a System.IO.Packaging.Package?
如果我有文件路径或流,除了尝试在 [=15 上使用 Package.Open
之外,是否有静态方法可用于确定 file/stream 是否为包=] 并捕获 System.IO.FileFormatException
?
您可以尝试将文件作为 .zip 文件打开,然后查找元数据(从而实现您验证包格式的包规范的一部分),或者您可以只使用 Open()
并捕获任何潜在的例外。 (.docx / .xlsx 等格式只是遵循特定结构的 ZIP 文件。)
您可以尝试阅读 ZIP header,但这只会验证文件是否为 ZIP 文件 - 我不确定这对您有多大帮助(如果有的话)。
我的猜测是,尝试打开文件并捕获异常是最简单的方法 - 如果规范发生变化,您的代码将继续工作。如果您推出自己的代码来验证文件格式,则必须继续维护它。
如果我有文件路径或流,除了尝试在 [=15 上使用 Package.Open
之外,是否有静态方法可用于确定 file/stream 是否为包=] 并捕获 System.IO.FileFormatException
?
您可以尝试将文件作为 .zip 文件打开,然后查找元数据(从而实现您验证包格式的包规范的一部分),或者您可以只使用 Open()
并捕获任何潜在的例外。 (.docx / .xlsx 等格式只是遵循特定结构的 ZIP 文件。)
您可以尝试阅读 ZIP header,但这只会验证文件是否为 ZIP 文件 - 我不确定这对您有多大帮助(如果有的话)。
我的猜测是,尝试打开文件并捕获异常是最简单的方法 - 如果规范发生变化,您的代码将继续工作。如果您推出自己的代码来验证文件格式,则必须继续维护它。