Schließen einen Scanner in Java

Rupam Yadav 12 Oktober 2023
  1. Schließen einen Scanner in Java nach dem Drucken der Standardeingabe des Benutzers
  2. Schließen einen Scanner in Java nach dem Drucken einer angegebenen Zeichenkette, die neue Zeilenzeichen dazwischen hat
  3. Verwenden Sie die Methode close(), um den Scanner in Java zu schließen, nachdem Sie den Inhalt einer Datei gelesen haben
Schließen einen Scanner in Java

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 Yadav avatar Rupam Yadav avatar

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

Verwandter Artikel - Java Scanner