・ À propos de ʻInput Stream Reader (System.in) `qui est pris en charge par l'entrée standard -Lorsque j'essaye d'ouvrir un flux d'entrée standard qui a été fermé, il reste fermé et ne s'ouvre pas.
C'est un flux d'entrée standard qui est pris en charge lors de la saisie de quelque chose depuis la console, mais il semble que le flux d'entrée standard une fois fermé dans le même programme ne puisse pas être ouvert.
Par exemple
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) {
try {
//Système lors de la deuxième entrée.en reste fermé
for (int i = 0; i < 2; i++) {
streamTest1();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*Renvoie la chaîne de caractères d'entrée standard à la console telle quelle
* @throws IOException
*/
private static void streamTest1() throws IOException {
try (BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in))) {
System.out.print("contribution>");
String st = br1.readLine();
System.out.println("production>" + st);
}
}
}
En essayant de faire ça
Sur la ligne String st = br1.readLine ();
dans streamTest1
java.io.IOException: Stream closed
A été retourné, et il s'est avéré que le flux d'entrée standard était toujours fermé.
Autant que je peux, lors de l'utilisation de plusieurs flux d'entrée standard dans le même programme, je ne peux penser à les fermer qu'après le dernier flux. C'est,
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) {
try {
streamTest1();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*Renvoie la chaîne de caractères d'entrée standard à la console telle quelle
*
* @throws IOException
*/
private static void streamTest1() throws IOException {
//Essayez le bloc supérieur de répétition-with-Apportez une déclaration de ressources
try (BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in))) {
int i = 0;
while (i < 2) {
System.out.print("contribution>");
String st = br1.readLine();
System.out.println("production>" + st);
i++;
}
}
}
}
Vous pouvez utiliser le flux d'entrée standard à plusieurs reprises en faisant.
-Lorsque j'essaye d'ouvrir et d'utiliser un flux d'entrée standard qui a été fermé une fois, il reste fermé et ne peut pas être utilisé. -Fermez le flux d'entrée standard pour le moment après la dernière utilisation du flux.
... Je pense qu'il existe un moyen de le fermer et de l'utiliser à nouveau. ..