• <menu id="w2i4a"></menu>
  • logo Aspose.Words使用教程

    文檔首頁>>Aspose.Words使用教程>>Java版Word開發(fā)工具Aspose.Words基礎教程:檢測文件格式并檢查格式兼容性

    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),我們很高興為您提供查詢和咨詢。
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();