Fermer un Scanner en Java
-
Fermer un
Scanner
en Java après avoir imprimé l’entrée standard de l’utilisateur -
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 -
Utilisez la méthode
close()
pour fermer leScanner
en Java après avoir lu le contenu d’un fichier
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.
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