„Hallo Amigo! Heute werden wir uns etwas echt interessantes ansehen: wie man den Eingabedatenstrom von System.in ersetzt.“

System.in ist eine einfache statische InputStream-Variable, aber du kannst ihr nicht einfach einen neuen Wert zuweisen. Aber du kannst die Methode System.setIn() verwenden.

Zuerst müssen wir einen Puffer erstellen und dann einige Werte hineinlegen. Dann hüllen wir ihn in eine Klasse ein, die weiß, wie man mit dem InputStream-Protokoll Daten aus dem Puffer liest.

Das sieht dann so aus:“

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! Das ist das interessanteste Beispiel, das ich je gesehen habe. Ich wusste gar nicht, dass du das kannst. Danke.“

„Gern geschehen, Amigo.“