bonjour , j'ai un petit problème dans la compréhension des flux Input en java . je vais essayer de vous présenter ce problème avec deux questions :


1) question :

ce simple code génère une exception : Exception in thread "main" java.io.IOException: Stream closed

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
InputStreamReader isr0 = new InputStreamReader(System.in);
BufferedReader br0 = new BufferedReader(isr0);
 
System.out.println("1) appuyez sur une touche");
br0.readLine();
 
br0.close();isr0.close();
 
System.out.println("2) appuyez sur une touche");
br0.readLine();
j'ai compris que l'erreur est généré parce que j'ai utilisé un flux que je viens de fermer.
Comment alors pouvoir réouvrir le flux 1) avec les même variables isr0 et br0 2)avec des autres variables?

2) question :

pour comprendre le mécanisme de fonctionnement d'ouverture et fermeture des flux Input, j'ai essayé de déclarer et utiliser un autre flux pour la 2ème lecture

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
InputStreamReader isr0 = new InputStreamReader(System.in);
BufferedReader br0 = new BufferedReader(isr0);
InputStreamReader isr1 = new InputStreamReader(System.in);
BufferedReader br1 = new BufferedReader(isr1);
 
System.out.println("1) appuyez sur une touche");
br0.readLine();
 
br0.close();isr0.close();
 
System.out.println("2) appuyez sur une touche");
br1.readLine();
j'ai la même exception alors que je n'ai pas fermé le flux (isr1,br1) utilisé dans la lecture .
je trouve ça étonnant et je voudrais savoir la raison de mon exception

Merci d'avance