标题可能有点令人困惑。最简单的方法就是像判断扩展名那样:
这在大多数情况下是可以的。但我发现对于某些扩展名为
我相信这个问题一定不少见。但我没有找到任何相关信息。显然,通过扩展名来判断是否读取
在我的情况下,我必须读取很多文件。我甚至要读取压缩文件(
最好的方法是如何判断一个文件是
// is represents the InputStream
if (filePath.endsWith("doc")) {
WordExtractor ex = new WordExtractor(is);
text = ex.getText();
ex.close();
} else if(filePath.endsWith("docx")) {
XWPFDocument doc = new XWPFDocument(is);
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
text = extractor.getText();
extractor.close();
}
这在大多数情况下是可以的。但我发现对于某些扩展名为
doc
(实际上是docx
文件)的文件,如果你使用winrar打开,你会发现xml
文件。众所周知,docx
文件是由xml
文件组成的zip
文件。我相信这个问题一定不少见。但我没有找到任何相关信息。显然,通过扩展名来判断是否读取
doc
或docx
是不合适的。在我的情况下,我必须读取很多文件。我甚至要读取压缩文件(
zip
、7z
或者rar
)中的doc
或docx
文件。因此,我必须通过inputStream读取内容,而不是使用File或其他类似的方法。因此,如何从Apache POI知道一个文件是.docx还是.doc格式对于我使用ZipInputStream
来说完全不适用。最好的方法是如何判断一个文件是
doc
还是docx
?我想要一种解决方案来读取一个可能是doc
或docx
的文件的内容。但不仅仅是简单地判断它是否为doc或docx。显然,ZipInpuStream
对于我的情况并不是一个好方法。我相信对于其他人来说也不是一个合适的方法。为什么要通过异常来判断文件是否为doc
或docx
呢?