Java版Word開發(fā)工具Aspose.Words基礎教程:檢測文件格式并檢查格式兼容性
Aspose.Words for Java是功能豐富的文字處理API,開發(fā)人員可以在自己的Java應用程序中嵌入生成,修改,轉換,呈現(xiàn)和打印Microsoft Word支持的所有格式的功能。它不依賴于Microsoft Word,但是它提供了Microsoft Word通過其API支持的功能。
>>Aspose.Words for Java已經(jīng)更新至v20.8,有93項改進和修復,點擊下載體驗
有時有必要在打開之前確定文檔的格式,因為文件擴展名不能保證文件的內(nèi)容適當。例如,眾所周知,Crystal Reports經(jīng)常以RTF格式輸出文檔,但是給它們提供.doc擴展名。
如果您不確定文件的實際內(nèi)容是什么,Aspose.Words可以獲取有關文件類型的信息,從而避免出現(xiàn)異常。
檢測文件格式無異常
當您處理各種文件格式的多個文檔時,可能需要將Aspose.Words可以處理的文件與不能處理的文件分開。您可能還想知道為什么某些文檔無法處理。
如果您嘗試將文件加載到 Document 對象中,而Aspose.Words無法識別該文件格式或不支持該格式,則Aspose.Words將引發(fā)異常。您可以捕獲這些異常并進行分析,但是Aspose.Words還提供了DetectFileFormat方法,該 方法使我們可以快速確定文件格式,而無需加載可能存在異常的文檔。此方法返回一個 FileFormatInfo 對象,該對象包含檢測到的有關文件類型的信息。
檢查文件格式兼容性
我們可以檢查所選文件夾中所有文件的格式兼容性,然后按格式將它們分類到相應的子文件夾中。
由于我們正在處理文件夾中的內(nèi)容,因此我們要做的第一件事是使用 Directory類的GetFiles方法(從System.IO命名空間)獲得此文件夾中所有文件的集合。
下面的代碼示例演示如何獲取文件夾中所有文件的列表:
File [] fileList = new File(dataDir).listFiles();
收集所有文件后,其余工作由DetectFileFormat 方法完成,該方法檢查文件格式。下面的代碼示例演示如何遍歷收集的文件列表,檢查每個文件的格式以及將每個文件移動到適當?shù)奈募A:
// The path to the documents directory. String dataDir = Utils.getDataDir(CheckFormatCompatibility.class); String supportedDir = dataDir + "OutSupported" + File.separator; String unknownDir = dataDir + "OutUnknown" + File.separator; String encryptedDir = dataDir + "OutEncrypted" + File.separator; String pre97Dir = dataDir + "OutPre97" + File.separator; File[] fileList = new File(dataDir).listFiles(); // Loop through all found files. for (File file : fileList) { if (file.isDirectory()) continue; // Extract and display the file name without the path. String nameOnly = file.getName(); System.out.print(nameOnly); // Check the file format and move the file to the appropriate folder. String fileName = file.getPath(); FileFormatInfo info = FileFormatUtil.detectFileFormat(fileName); // Display the document type. switch (info.getLoadFormat()) { case LoadFormat.DOC: System.out.println("\tMicrosoft Word 97-2003 document."); break; case LoadFormat.DOT: System.out.println("\tMicrosoft Word 97-2003 template."); break; case LoadFormat.DOCX: System.out.println("\tOffice Open XML WordprocessingML Macro-Free Document."); break; case LoadFormat.DOCM: System.out.println("\tOffice Open XML WordprocessingML Macro-Enabled Document."); break; case LoadFormat.DOTX: System.out.println("\tOffice Open XML WordprocessingML Macro-Free Template."); break; case LoadFormat.DOTM: System.out.println("\tOffice Open XML WordprocessingML Macro-Enabled Template."); break; case LoadFormat.FLAT_OPC: System.out.println("\tFlat OPC document."); break; case LoadFormat.RTF: System.out.println("\tRTF format."); break; case LoadFormat.WORD_ML: System.out.println("\tMicrosoft Word 2003 WordprocessingML format."); break; case LoadFormat.HTML: System.out.println("\tHTML format."); break; case LoadFormat.MHTML: System.out.println("\tMHTML (Web archive) format."); break; case LoadFormat.ODT: System.out.println("\tOpenDocument Text."); break; case LoadFormat.OTT: System.out.println("\tOpenDocument Text Template."); break; case LoadFormat.DOC_PRE_WORD_60: System.out.println("\tMS Word 6 or Word 95 format."); break; case LoadFormat.UNKNOWN: default: System.out.println("\tUnknown format."); break; } // Now copy the document into the appropriate folder. if (info.isEncrypted()) { System.out.println("\tAn encrypted document."); fileCopy(fileName, new File(encryptedDir, nameOnly).getPath()); } else { switch (info.getLoadFormat()) { case LoadFormat.DOC_PRE_WORD_60: fileCopy(fileName, new File(pre97Dir + nameOnly).getPath()); break; case LoadFormat.UNKNOWN: fileCopy(fileName, new File(unknownDir + nameOnly).getPath()); break; default: fileCopy(fileName, new File(supportedDir + nameOnly).getPath()); break; } } }
使用File類的Move方法將文件從相同的System.IO名稱空間移動到適當?shù)淖游募A中。上面的示例中使用了以下文件。文件名在左邊,描述在右邊:
文件組 | 輸入文件 | 類型 |
支持的文件格式 | Test File (Doc).doc | Microsoft Word 95 / 6.0或Microsoft Word 97 – 2003文檔。 |
Test File (Dot).dot | Microsoft Word 95 / 6.0或Microsoft Word 97 – 2003模板。 | |
Test File (Docx).docx | 沒有宏的Office Open XML WordprocessingML文檔。 | |
Test File (Docm).docm | 帶有宏的Office Open XML WordprocessingML文檔。 | |
Test File (Dotx).dotx | Office Open XML WordprocessingML模板。 | |
Test File (Dotm).dotm | 帶有宏的Office Open XML WordprocessingML模板。 | |
Test File (XML).xml | FlatOPC OOXML文檔。 | |
Test File (RTF).rtf | 富文本格式文檔。 | |
Test File (WordML).xml | Microsoft Word 2003 WordprocessingML文檔。 | |
Test File (HTML).html | HTML文檔。 | |
Test File (MHTML).mhtml | MHTML(網(wǎng)絡存檔)文檔。 | |
Test File (Odt).odt | OpenDocument文本(OpenOffice Writer)。 | |
Test File (Ott).ott | OpenDocument文檔模板。 | |
Test File (DocPreWord60).doc | Microsoft Word 2.0文檔。 | |
加密文件 | Test File (Enc).doc | 加密的Microsoft Word 95 / 6.0或Microsoft Word 97 – 2003文檔。 |
Test File (Enc).docx | 加密的Office Open XML WordprocessingML文檔。 | |
不支援的檔案格式 | Test File (JPG).jpg | JPEG圖像文件。 |
還想要更多嗎?您可以點擊閱讀【2020 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問或需求,請隨時加入Aspose技術交流群(642018183),我們很高興為您提供查詢和咨詢。