Para utilizar XMLStreamReader estoy inicializándola gustaría -XMLStreamReader no cerrar archivo XML abierto
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader reader = f.createXMLStreamReader(new FileReader(
"somefile.xml"));
iteración en que gustaría -
if (reader.hasNext()) {
reader.next();
// do something with xml data
}
último cierre se siente -
reader.close();
Este parece ser un flujo normal, pero estoy viendo un comportamiento extraño. Incluso después de cerrar el lector, el sistema operativo no me permite eliminar/mover el archivo xml a menos que salga del programa java. Cuando se ejecuta en Win2k8-server, recibo un mensaje de error que dice que java.exe está usando este archivo xml.
Así que tengo par de preguntas -
- ¿Es necesario cerrar explícitamente el cierre de cada FileReader?
- ¿Cómo puedo saber qué ruta de código java es mantener este identificador de archivo abierto.
Buscando en la documentación de XMLStreamReader's close(), obtengo siguiente: "Libera los recursos asociados con este lector. Este método no cierra la fuente de entrada subyacente".
¿Cuál es el significado de "fuente de entrada subyacente"? ¿Por qué no está cerrado por el cierre del lector()?
La API del método [close()] (http://download.oracle.com/javase/6/docs/api/javax/xml/stream/XMLStreamReader.html#close()) claramente diga que no cierra el objeto _Reader_ subyacente. Tal vez cite la oración de la API en su respuesta. – Progman
Cualquier cosa sobre mi segunda pregunta: ¿cómo puedo averiguar cuál es la ruta del código java que mantiene abierto este identificador de archivo? – siddharth178