Tika无法删除临时文件

时间:2013-01-11 14:24:50

标签: java io garbage-collection apache-tika memory-mapping

在我们的应用程序中,我们使用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文件夹中留下临时文件。什么可以解决这个问题?

2 个答案:

答案 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。这里有两个解决方案: