我早先通过调用 tika.parseToString()
的情况下成功地解析了各种文件,而无需设置任何自定义配置或元数据。现在,我需要根据Mime-Type过滤文件以解析。
我可以找到带有tika.detect(new BufferedInputStream(inputStream), new Metadata());
的MIME型,但是当调用tika.parseToString()
之后,Tika使用emptyParser,并且检测到的内容类型为"应用程序/八位钟"。这是默认的,这意味着Tika找不到它是哪种类型的文件。在尝试解析文件之前,我已经尝试在元数据中设置内容类型,但这导致了org.apache.tika.exception.TikaException: TIKA-198: Illegal IOException
。从我阅读的内容中,这意味着文件是畸形的,但是相同的文件在没有事先检查MIME类型的情况下成功解析。
detchect()是否对输入流进行操作,使解析器无法解析文件?
我正在使用相同的tika-Instance检查哑剧类型和解析,版本1.13
我的问题是由直接传递给解析方法的InputStream引起的。detect()标记并重置流传递的流,输入流不支持。将InputStream包装到TikainputStream(TikaInputStream stream = TikaInputStream.get(new BufferedInputStream(inputStream));
)解决了问题。