在我们的应用程序中,我们使用Apache Tika处理文件。但是有一些文件(例如* .mov,* .mp4),Tika无法处理这些文件,并在用户的Temp文件夹中留下相应的* .tmp文件。经过一些研究后,我发现这是一个已知的错误:https://issues.apache.org/jira/browse/TIKA-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
在上一条评论中,用户谈到了一种解决方法,但它对我不起作用:
final Tika tika = new Tika();
final TikaInputStream fileStream = TikaInputStream.get(/*some InputStream*/);
try {
final String extractedString = tika.parseToString(fileStream);
//do something with the string
} finally {
CloseUtils.close(fileStream);
}
使用上面的代码仍会在Temp文件夹中留下临时文件。什么可以解决这个问题?
答案 0 :(得分:1)
应使用File对象而不是InputStream调用get()方法:
final File file = new File("c:/some_file.mov");
final TikaInputStream fileStream = TikaInputStream.get(file);
Tika仍然无法处理它,但它实际上设法删除了对应的tmp文件。
答案 1 :(得分:1)
另一种解决方法是禁用org.apache.tika.parser.mp4.MP4Parser
。这里有两个解决方案: