3

在我们的应用程序中,我们使用 Apache Tika 处理文件。但是有些文件(例如 *.mov、*.mp4)是 Tika 无法处理的,因此会将相应的 *.tmp 文件留在用户的 Temp 文件夹中。经过一番研究,我发现这是一个已知的错误: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 文件夹中留下临时文件。有什么办法可以解决这个问题?

4

2 回答 2

2

应该使用 File 对象而不是 InputStream 调用 get() 方法:

final File file = new File("c:/some_file.mov");
final TikaInputStream fileStream = TikaInputStream.get(file);

Tika 仍然无法处理它,但它实际上设法删除了相应的 tmp 文件。

于 2013-01-11T16:06:45.463 回答
1

另一种解决方法是禁用org.apache.tika.parser.mp4.MP4Parser. 这里有两个解决方案:

于 2013-02-05T15:31:25.577 回答