Descargo de responsabilidad: He revisado todas las preguntas que puedo encontrar y ninguna contesta exactamente esta pregunta. Si encuentra uno, indíquelo y sea amable.¿Usar el archivo o FileReader con escáner?
Así, el Oracle I/O tutorial abre un archivo de texto con el escáner de la siguiente manera:
new Scanner(BufferedReader(FileReader("xanadu.txt")));
Pero el Javadoc abre un archivo de texto con el escáner de la siguiente manera:
new Scanner(new File("myNumbers"));
Sería bueno utilizar el método más simple, especialmente cuando tengo un archivo pequeño y puedo vivir con el búfer más pequeño, pero también he visto a la gente decir que cuando abre un archivo directamente, can't close it. Si ese es el caso, ¿por qué se usa esa expresión idiomática en la documentación oficial?
Editar: También he visto new Scanner(FileReader("blah.txt"));
pero esto parece ser lo peor de ambos mundos.
Editar: No estoy tratando de iniciar un debate sobre si usar Scanner o no. Tengo una pregunta sobre cómo usar Scanner. Gracias.
Como señaló @Tudor, el archivo no se cierra(): ¿el archivo real se cierra cuando utiliza Scanner de esta manera, o queda el recurso colgando? – orbfish
Sí, si pasa File al constructor de Scanner se usa para abrir la secuencia que se cerraría al llamar al método Scanner.close(). No importa qué constructor uses si llamas a close() correctamente (por ejemplo, desde try/finally) entonces se cerrará correctamente. – maximdim