提问者:小点点

如何从Apache中知道文件是. docx还是.文档格式POI


我知道我们可以通过扩展名或mime类型来完成它,我们是否有其他方法可以了解文件类型,无论是. docx还是.文档。


共3个答案

匿名用户

如果只是决定一个已知为.文档. docx但没有相应标记扩展名的文件集合,您可以使用.docx文件是压缩文件集合的事实。以下内容可能会有所帮助:

boolean isZip = new ZipInputStream( fileStream ).getNextEntry() != null;

其中fileStream是您希望评估的任何文件或其他输入流。您可以通过查找键. docx条目来进一步评估压缩文件。Word文档(DOCX)是一个很好的起始参考。同样,如果您知道它只是一个二进制文件,您可以测试Word的文件信息块(参见Word(.文档)二进制文件格式)

匿名用户

您可以使用Apache Tika进行内容检测。但您应该知道,对于这样一个小任务来说,这是一个巨大的框架(许多必需的依赖项)。

匿名用户

有一种方法,虽然没有向前推进。但是使用ApachePOI,您可以找到它。

尝试使用HWPFDocument Class读取. docx文件。它会给你以下错误

org. apache.poi.poifs.filessystem.Office XmlFileException:提供的数据似乎位于Office 2007XML中。您正在调用POI中处理OLE2 Office文档的部分。您需要调用POI的其他部分来处理此数据(例如XSSF而不是HSSF)

String filePath = "C:\\XXXX\XXXX.docx";
FileInputStream inStream;
try {
    inStream = new FileInputStream(new File(filePath));
    HWPFDocument doc = new HWPFDocument(inStream);
    WordExtractor wordExtractor = new WordExtractor(doc);
    System.out.println("Getting words"+wordExtractor.getText());
} catch (Exception e) {
    System.out.print("Its not a .doc format");
}

. docx可以使用XWPFDocument Class读取。