Disclaimer: Ho esaminato tutte le domande che riesco a trovare e nessuna risponde a questa domanda esatta. Se ne trovi uno per favore indicami ed educati.Utilizzare File o FileReader con Scanner?
Così, il Oracle I/O tutorial apre un file di testo con scanner come segue:
new Scanner(BufferedReader(FileReader("xanadu.txt")));
Ma la Javadoc apre un file di testo con scanner in questo modo:
new Scanner(new File("myNumbers"));
Sarebbe bello utilizzare il metodo più semplice, soprattutto quando ho un piccolo file e posso vivere con il buffer più piccolo, ma ho anche visto persone dire che quando apri un file direttamente, fai il can't close it. Se è così, perché questo idioma è usato nella documentazione ufficiale?
Modifica: ho anche visto new Scanner(FileReader("blah.txt"));
ma questo sembra il peggiore di entrambi i mondi.
Modifica: non sto tentando di avviare un dibattito sull'utilizzo dello scanner o meno. Ho una domanda su come usare Scanner. Grazie.
Come sottolineato da @Tudor, File non si chiude() - così il file reale si chiude quando si utilizza Scanner in questo modo, o la risorsa rimane sospesa? – orbfish
Sì, se si passa File al programma di sviluppo Scanner, viene utilizzato per aprire il flusso che verrebbe chiuso dopo aver chiamato il metodo Scanner.close(). Non importa quale costruttore si usi se si chiama close() correttamente (ad esempio da try/finally) quindi sarebbe correttamente chiuso. – maximdim