【问题标题】:Tika could not delete temporary filesTika 无法删除临时文件
【发布时间】:2013-01-11 14:24:49
【问题描述】:

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

【问题讨论】:

  • 如果你在 Linux/Unix 上,你可以让 cronjob 清理临时文件。
  • 不幸的是我在 Windows 上,我还必须从 Java 解决这个问题。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      相关资源
      最近更新 更多