检测文件格式并检查格式兼容性
Contents
[
Hide
]
有时需要在打开之前确定文档的格式,因为文件扩展名并不能保证文件的内容是适当的。例如,众所周知,Crystal Reports 通常以 RTF 格式输出文档,但赋予它们 .doc 扩展名。
Aspose.Words 提供了获取有关文件类型的信息的功能,以避免在您不确定文件的实际内容是什么时出现异常。
检测文件格式无异常
当您处理各种文件格式的多个文档时,您可能需要将 Aspose.Words 可以处理的文件与不能处理的文件分开。您可能还想知道为什么某些文档无法处理。
如果尝试将文件加载到 Document 对象中,而 Aspose.Words 无法识别该文件格式或不支持该格式,则 Aspose.Words 将引发异常。您可以捕获这些异常并对其进行分析,但是 Aspose.Words 还提供了 detect_file_format 方法,使我们能够快速确定文件格式,而无需加载可能存在异常的文档。此方法返回一个 FileFormatInfo 对象,其中包含检测到的有关文件类型的信息。
detect_file_format仅检查文件格式,但不验证文件格式。即使 detect_file_format 返回文件是受支持的格式之一,也不能保证文件能够成功打开。这是因为 detect_file_format 方法仅读取部分文件格式数据,足以检查文件格式,但不足以进行完整验证。
检查文件格式兼容性
我们可以检查所选文件夹中所有文件的格式兼容性,并将它们按格式排序到相应的子文件夹中。
由于我们处理的是文件夹中的内容,因此我们需要做的第一件事是使用 操作系统 模块的 列表目录 方法获取该文件夹中所有文件的集合。
以下代码示例展示了如何获取文件夹中所有文件的列表:
当收集完所有文件后,剩下的工作由 detect_file_format 方法完成,该方法检查文件格式。
以下代码示例演示如何迭代收集的文件列表、检查每个文件的格式并将每个文件移动到适当的文件夹:
使用 舒蒂尔 模块的 复制文件 方法将文件移动到适当的子文件夹中。
上面的示例中使用了以下文件。文件名位于左侧,其描述位于右侧:
文件的 Group | 输入文件 | 类型 |
---|---|---|
支持的文件格式 | 测试文件(Doc).doc | Microsoft Word 95/6.0 或 Microsoft Word 97 – 2003 文档。 |
测试文件 (Dot ).dot |
Microsoft Word 95/6.0 或 Microsoft Word 97 – 2003 模板。 | |
测试文件 (Docx).docx | 不带宏的 Office Open XML WordprocessingML 文档。 | |
测试文件(Docm).docm | 带有宏的 Office Open XML WordprocessingML 文档。 | |
测试文件 (Dotx).dotx | Office Open XML WordprocessingML 模板。 | |
测试文件 (Dotm).dotm | 带有宏的 Office Open XML WordprocessingML 模板。 | |
测试文件 (XML).xml | FlatOPC OOXML 文档。 | |
测试文件 (RTF).rtf | 富文本格式文档。 | |
测试文件 (WordML).xml | Microsoft Word 2003 WordprocessingML 文档。 | |
测试文件 (HTML).html | HTML 文档。 | |
测试文件 (MHTML).mhtml | MHTML(网络存档)文档。 | |
测试文件 (Odt).odt | OpenDocument 文本(OpenOffice Writer)。 | |
测试文件 (Ott).ott | OpenDocument 文档模板。 | |
测试文件 (DocPreWord60).doc | Microsoft Word 2.0 文档。 | |
加密文件 | 测试文件(Enc).doc | 加密的 Microsoft Word 95/6.0 或 Microsoft Word 97 – 2003 文档。 |
测试文件 (Enc).docx | 加密的 Office Open XML WordprocessingML 文档。 | |
不支持的文件格式 | 测试文件 (JPG).jpg | JPEG 图像文件。 |