2013-01-11 76 views
3

在我们的应用程序中,我们正在使用Apache Tika处理文件。但是有一些Tika无法处理的文件(例如* .mov,* .mp4),并在用户的Temp文件夹中留下相应的* .tmp文件。经过一番研究,我发现,这是一个已知的bug:https://issues.apache.org/jira/browse/TIKA-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanelTika无法删除临时文件

在最后的评论大约一个解决方法,用户会谈,但它并没有为我工作:

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文件夹中。有什么可以解决这个问题的?仍然

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

提卡不能处理它,但它实际上设法删除correspondig tmp文件:

+0

如果你是在Linux/Unix,你可以让一个cronjob清理临时文件。 –

+2

不幸的是我在Windows上,我也必须从Java解决这个问题。 – nosferat

回答

1

的get()方法应该用一个文件对象,而不是一个InputStream被调用。