Тика не могла удалить временные файлы

В нашем приложении мы обрабатываем файлы с помощью 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. Что может быть решением этого?


person nosferat    schedule 11.01.2013    source источник
comment
Если вы работаете в Linux/Unix, вы можете позволить cronjob очистить временные файлы.   -  person Olaf Dietsche    schedule 11.01.2013
comment
К сожалению, я работаю в Windows, и мне также приходится решать это с помощью Java.   -  person nosferat    schedule 11.01.2013


Ответы (2)


Метод get() следует вызывать с объектом File вместо InputStream:

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

Tika по-прежнему не может его обработать, но ему действительно удается удалить соответствующий файл tmp.

person nosferat    schedule 11.01.2013

Другой обходной путь — отключение файла org.apache.tika.parser.mp4.MP4Parser. Два решения здесь:

person palacsint    schedule 05.02.2013