Java Tika无法删除临时文件
在我们的应用程序中,我们使用ApacheTika处理文件。但Tika无法处理某些文件(例如*.mov、*.mp4),并将相应的*.tmp文件保留在用户的临时文件夹中。经过一些研究,我发现这是一个已知的bug: 在最后一条评论中,一位用户谈到了一个变通方法,但它不适用于我:Java Tika无法删除临时文件,java,io,garbage-collection,apache-tika,memory-mapping,Java,Io,Garbage Collection,Apache Tika,Memory Mapping,在我们的应用程序中,我们使用ApacheTika处理文件。但Tika无法处理某些文件(例如*.mov、*.mp4),并将相应的*.tmp文件保留在用户的临时文件夹中。经过一些研究,我发现这是一个已知的bug: 在最后一条评论中,一位用户谈到了一个变通方法,但它不适用于我: final Tika tika = new Tika(); final TikaInputStream fileStream = TikaInputStream.get(/*some InputStream*/); try {
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文件夹中保留temp文件。解决这个问题的方法是什么?应该使用文件对象而不是InputStream调用get()方法:
final File file = new File("c:/some_file.mov");
final TikaInputStream fileStream = TikaInputStream.get(file);
Tika仍然无法处理它,但它实际上成功地删除了相应的TIG tmp文件。另一个解决方法是禁用
org.apache.Tika.parser.mp4.MP4Parser
。这里有两种解决方案: