Chiudi uno scanner in Java
-
Chiudere uno
Scanner
in Java dopo aver stampato l’input standard dall’utente -
Chiudere uno
Scanner
in Java dopo aver stampato una stringa specificata che ha nuovi caratteri di riga in mezzo -
Usa il metodo
close()
per chiudere loScanner
in Java dopo aver letto il contenuto di un file
In questo tutorial impareremo come chiudere uno scanner in Java e quando dovremmo usarlo. La classe Scanner
ha un metodo close()
particolarmente disponibile per chiudere lo scanner aperto. Anche se non chiamiamo esplicitamente il metodo close()
, verrà invocata l’interfaccia Closeable
, chiudendo lo stream. È buona norma chiudere uno scanner in modo esplicito.
Di seguito sono riportati gli esempi che mostrano come e quando possiamo utilizzare il metodo Scanner.close()
.
Chiudere uno Scanner
in Java dopo aver stampato l’input standard dall’utente
Nel codice seguente, abbiamo creato un oggetto Scanner
in
che accetta lo standard input System.in
dall’utente nel costruttore. Il metodo nextLine()
restituisce l’input che è stato saltato. Legge l’intera riga di input fino alla fine della riga, inclusi spazi e separatori di riga.
L’input viene stampato, quindi chiudiamo lo Scanner
chiamando il metodo close()
sull’oggetto Scanner
in
. Dopo che lo Scanner
è chiuso, se vogliamo usare in
come stiamo facendo di seguito con myString2
, verrà lanciata un’eccezione perché lo stream o Scanner
è stato chiuso.
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a String: ");
String mystring = in.nextLine();
System.out.println("The String you entered is: " + mystring);
in.close();
String myString2 = in.nextLine();
System.out.println(myString2);
}
}
Produzione:
Enter a String: the cat is white
The String you entered is: the cat is white
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.base/java.util.Scanner.ensureOpen(Scanner.java:1150)
at java.base/java.util.Scanner.findWithinHorizon(Scanner.java:1781)
at java.base/java.util.Scanner.nextLine(Scanner.java:1649)
at com.company.Main.main(Main.java:20)
Chiudere uno Scanner
in Java dopo aver stampato una stringa specificata che ha nuovi caratteri di riga in mezzo
In questo esempio, separeremo la stringa s
in righe differenti usando \n
e nextLine()
. \n
è usato per indicare una nuova riga, e poiché scanner.nextLine()
nota una nuova riga, va su una nuova riga e poi la stampa. Quindi l’output ha tutti e tre i soggetti in s
in righe diverse.
Questa è una delle situazioni in cui potremmo voler chiamare il metodo close()
poiché non vogliamo che lo scanner
esegua la scansione di ulteriori nuove righe.
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
try {
String s = " English \n Maths \n Science ";
Scanner scanner = new Scanner(s);
System.out.println(scanner.nextLine());
System.out.println(scanner.nextLine());
System.out.println(scanner.nextLine());
scanner.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Produzione:
English
Maths
Science
Usa il metodo close()
per chiudere lo Scanner
in Java dopo aver letto il contenuto di un file
Si consiglia di chiudere sempre lo Scanner
durante la lettura di un file. Assicura che non venga aperto alcun flusso di input o output, che non è in uso. L’esempio seguente mostra come leggere una stringa dal file e poi chiudere lo Scanner
una volta terminata l’operazione.
import java.io.File;
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
try {
File file = new File("/Users/john/Documents/Example.txt");
Scanner scanner = new Scanner(file);
StringBuffer sb = new StringBuffer();
while (scanner.hasNext()) {
sb.append(" " + scanner.nextLine());
}
System.out.println(sb);
scanner.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Produzione:
Hello, You are in a text file.
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn