Fermer un Scanner en Java

Rupam Yadav 12 octobre 2023
  1. Fermer un Scanner en Java après avoir imprimé l’entrée standard de l’utilisateur
  2. Fermer un Scanner en Java après l’impression d’une chaîne de caractères spécifiée qui comporte de nouveaux caractères de ligne entre les deux
  3. Utilisez la méthode close() pour fermer le Scanner en Java après avoir lu le contenu d’un fichier
Fermer un Scanner en Java

Dans ce tutoriel, nous apprendrons comment fermer un scanner en Java, et quand nous devons l’utiliser. La classe Scanner a une méthode close() qui est spécialement disponible pour fermer le scanner ouvert. Même si nous n’appelons pas explicitement la méthode close(), l’interface Closeable sera invoquée, fermant le flux. C’est une bonne pratique de fermer un analyseur explicitement.

Vous trouverez ci-dessous des exemples qui montrent comment et quand nous pouvons utiliser la méthode Scanner.close().

Fermer un Scanner en Java après avoir imprimé l’entrée standard de l’utilisateur

Dans le code ci-dessous, nous avons créé un objet Scanner qui prend l’entrée standard System.in de l’utilisateur dans le constructeur. La méthode nextLine() retourne l’entrée qui a été ignorée. Elle lit toute la ligne d’entrée jusqu’à la fin de la ligne, y compris les espaces et les séparateurs de ligne.

L’entrée est imprimée, et ensuite nous fermons le Scanner en appelant la méthode close() sur l’objet Scanner in. Après la fermeture du Scanner, si nous voulons utiliser in comme nous le faisons ci-dessous avec myString2, il lancera une exception parce que le flux ou le Scanner a été fermé.

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);
  }
}

Production :

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)

Fermer un Scanner en Java après l’impression d’une chaîne de caractères spécifiée qui comporte de nouveaux caractères de ligne entre les deux

Dans cet exemple, nous allons séparer la chaîne s en différentes lignes en utilisant \n et nextLine(). \n est utilisé pour indiquer une nouvelle ligne, et lorsque le scanner.nextLine() remarque une nouvelle ligne, il passe à une nouvelle ligne et l’imprime. Ainsi, la sortie a les trois sujets dans des s dans des lignes différentes.

C’est l’une des situations dans lesquelles nous pourrions vouloir appeler la méthode close() car nous ne voulons pas que le scanner scanne d’autres nouvelles lignes.

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());
    }
  }
}

Production :

 English 
 Maths 
 Science 

Utilisez la méthode close() pour fermer le Scanner en Java après avoir lu le contenu d’un fichier

Il est recommandé de toujours fermer le Scanner lorsque nous lisons un fichier. Cela permet de s’assurer qu’aucun flux d’entrée ou de sortie n’est ouvert, qui n’est pas en cours d’utilisation. L’exemple suivant montre comment nous pouvons lire une chaîne du fichier et ensuite fermer le Scanner une fois l’opération terminée.

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());
    }
  }
}

Production :

Hello, You are in a text file.
Auteur: Rupam Yadav
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

Article connexe - Java Scanner