Как удалить файл после того, как синтаксический анализ XML выдал ошибку в java?

#java #xml #file

#java #xml #файл

Вопрос:

У меня есть фрагмент кода, который выглядит следующим образом

 File file = null;
try {

file = new file (filePath);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
// Do Stuff

} finally {

        if ( file.exists() ){
            file.delete();
        }
}
  

Однако, если при синтаксическом анализе xml возникает ошибка, файл не удаляется. Есть ли способ исправить это, чтобы гарантировать удаление файла?

Ответ №1:

Бьюсь об заклад, это под Windows.

В Windows вы не можете удалить открытый файл, и db.parse() открывает файл для чтения. Подумайте, можете ли вы передать InputStream, за закрытие которого вы несете ответственность, и затем вы сможете удалить файл.

Комментарии:

1. Это под Windows. И ваше предложение сработало. Теперь я передаю InputStream в db.parse(). Спасибо!

2. Для справки, я бы поместил удаление в блок try / catch, чтобы вы могли обрабатывать исключения

3. Не забудьте проверить значение, возвращаемое delete()