Schließen einen Scanner in Java
-
Schließen einen
Scanner
in Java nach dem Drucken der Standardeingabe des Benutzers -
Schließen einen
Scanner
in Java nach dem Drucken einer angegebenen Zeichenkette, die neue Zeilenzeichen dazwischen hat -
Verwenden Sie die Methode
close()
, um denScanner
in Java zu schließen, nachdem Sie den Inhalt einer Datei gelesen haben
In diesem Tutorial werden wir lernen, wie man einen Scanner in Java schließt und wann man ihn verwenden sollte. Die Klasse Scanner
hat eine Methode close()
, die speziell dafür da ist, den geöffneten Scanner zu schließen. Auch wenn wir die Methode close()
nicht explizit aufrufen, wird die Schnittstelle Closeable
aufgerufen und der Stream geschlossen. Es ist eine gute Praxis, einen Scanner explizit zu schließen.
Im Folgenden finden Sie Beispiele, die zeigen, wie und wann wir die Methode Scanner.close()
verwenden können.
Schließen einen Scanner
in Java nach dem Drucken der Standardeingabe des Benutzers
Im folgenden Code haben wir ein Scanner
-Objekt in
erstellt, das im Konstruktor die Standardeingabe System.in
vom Benutzer entgegennimmt. Die Methode nextLine()
gibt die übersprungene Eingabe zurück. Sie liest die gesamte Eingabezeile bis zum Ende der Zeile, einschließlich Leerzeichen und Zeilentrenner.
Die Eingabe wird gedruckt, und dann schließen wir den Scanner
durch Aufruf der Methode close()
auf dem Scanner
-Objekt in
. Wenn wir nach dem Schließen des Scanners
in
verwenden wollen, wie wir es unten mit myString2
tun, wird eine Exception geworfen, weil der Stream oder Scanner
geschlossen wurde.
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);
}
}
Ausgabe:
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)
Schließen einen Scanner
in Java nach dem Drucken einer angegebenen Zeichenkette, die neue Zeilenzeichen dazwischen hat
In diesem Beispiel wird die Zeichenkette s
mit \n
und nextLine()
in verschiedene Zeilen aufgeteilt. \n
wird verwendet, um eine neue Zeile anzuzeigen, und wenn scanner.nextLine()
eine neue Zeile bemerkt, geht es zu einer neuen Zeile und gibt diese dann aus. Somit hat die Ausgabe alle drei Subjekte in s
in verschiedenen Zeilen.
Dies ist eine der Situationen, in denen wir die Methode close()
aufrufen sollten, da wir nicht wollen, dass der scanner
weitere neue Zeilen scannt.
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());
}
}
}
Ausgabe:
English
Maths
Science
Verwenden Sie die Methode close()
, um den Scanner
in Java zu schließen, nachdem Sie den Inhalt einer Datei gelesen haben
Es wird empfohlen, den Scanner
immer zu schließen, wenn wir eine Datei gelesen haben. Damit wird sichergestellt, dass kein Ein- oder Ausgabestrom geöffnet wird, der nicht in Gebrauch ist. Das folgende Beispiel zeigt, wie wir einen String
aus der Datei lesen und dann den Scanner
schließen, wenn der Vorgang abgeschlossen ist.
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());
}
}
}
Ausgabe:
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