CodeGym/Cours Java/Bases de Java/Écris ton propre flux : un wrapper pour System.in

Écris ton propre flux : un wrapper pour System.in

Disponible

« Bonjour, Amigo ! Aujourd'hui, nous allons explorer quelque chose de super intéressant : comment remplacer le flux d'entrée System.in. »

System.in n'est qu'une variable InputStream statique, mais tu ne peux pas simplement lui affecter une nouvelle valeur. Cependant, tu peux utiliser la méthode System.setIn().

Tout d'abord, nous devons créer un tampon, puis mettre des valeurs dedans. Ensuite, nous allons l'emballer dans une classe qui sait lire les données du tampon avec le protocole InputStream.

Voici à quoi ça ressemble :

Code
public static void main(String[] args) throws IOException
{
 //Put data into a string
 StringBuilder sb = new StringBuilder();
 sb.append("Lena").append('\n');
 sb.append("Olya").append('\n');
 sb.append("Anya").append('\n');
 String data = sb.toString();

 //Wrap the string in a ByteArrayInputStream
 InputStream is = new ByteArrayInputStream(data.getBytes());

 //Replace in
 System.setIn(is);

 //Call an ordinary method that doesn't know about our changes
 readAndPrintLine();
}

public static void readAndPrintLine() throws IOException
{
 InputStreamReader isr = new InputStreamReader(System.in);
 BufferedReader reader = new BufferedReader(isr);

 while (true)
 {
  String line = reader.readLine();
  if (line == null) break;
  System.out.println(line);
 }
 reader.close();
 isr.close();
}

« Bilaabo ! C'est le plus exemple intéressant que j'aie vu. Je ne savais pas qu'on pouvait faire ça. Merci. »

« Mais de rien, Amigo. »

Commentaires
  • Populaires
  • Nouveau
  • Anciennes
Tu dois être connecté(e) pour laisser un commentaire
Cette page ne comporte pas encore de commentaires