Aspose.Words for Java是功能丰富的文字处理API,开发人员可以在自己的Java应用程序中嵌入生成,修改,转换,呈现和打印Microsoft Word支持的所有格式的功能。它不依赖于Microsoft Word,但是它提供了Microsoft Word通过其API支持的功能。


有时有必要在打开之前确定文档的格式,因为文件扩展名不能保证文件的内容适当。例如,众所周知,Crystal Reports经常以RTF格式输出文档,但是给它们提供.doc扩展名。

如果您不确定文件的实际内容是什么,Aspose.Words可以获取有关文件类型的信息,从而避免出现异常。

检测文件格式无异常

当您处理各种文件格式的多个文档时,可能需要将Aspose.Words可以处理的文件与不能处理的文件分开。您可能还想知道为什么某些文档无法处理。

如果您尝试将文件加载到 Document 对象中,而Aspose.Words无法识别该文件格式或不支持该格式,则Aspose.Words将引发异常。您可以捕获这些异常并进行分析,但是Aspose.Words还提供了DetectFileFormat方法,该 方法使我们可以快速确定文件格式,而无需加载可能存在异常的文档。此方法返回一个 FileFormatInfo 对象,该对象包含检测到的有关文件类型的信息。

检查文件格式兼容性

我们可以检查所选文件夹中所有文件的格式兼容性,然后按格式将它们分类到相应的子文件夹中。

由于我们正在处理文件夹中的内容,因此我们要做的第一件事是使用 Directory类的GetFiles方法(从System.IO命名空间)获得此文件夹中所有文件的集合。

下面的代码示例演示如何获取文件夹中所有文件的列表:

File [] fileList = new File(dataDir).listFiles();

收集所有文件后,其余工作由DetectFileFormat 方法完成,该方法检查文件格式。下面的代码示例演示如何遍历收集的文件列表,检查每个文件的格式以及将每个文件移动到适当的文件夹:

// 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名称空间移动到适当的子文件夹中。上面的示例中使用了以下文件。文件名在左边,描述在右边:

文件组

输入文件

类型

支持的文件格式

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(网络存档)文档。


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图像文件。