Для использования XMLStreamReader я инициализирую его как -
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader reader = f.createXMLStreamReader(new FileReader(
"somefile.xml"));
Перебирая это как -
if (reader.hasNext()) {
reader.next();
// do something with xml data
}
Наконец закрываем его как -
reader.close();
Это выглядит как нормальный поток, но я вижу странное поведение. Даже после закрытия программы чтения ОС не позволяет мне удалять / перемещать XML-файл, пока я не выйду из Java-программы. При запуске на Win2k8-сервере появляется сообщение об ошибке, в котором говорится, что java.exe использует этот xml-файл.
Итак, у меня есть пара вопросов -
- Нужно ли явно закрывать закрытие каждого FileReader'а?
- Как узнать, какой путь к коду Java поддерживает этот дескриптор файла.
Просматривая @ документацию о XMLStreamReader's close (), я получаю следующее: «Освобождает любые ресурсы, связанные с этим Reader. Этот метод не закрывает основной источник ввода». *
Что означает «базовый источник ввода»?
Почему это не закрывается читателем close ()?