"Hallo, Amigo! Vandaag gaan we een aantal superinteressante dingen onderzoeken: hoe je de invoerstroom van System.in kunt vervangen ."

System.in  is een eenvoudige statische InputStream- variabele, maar u kunt er niet zomaar een nieuwe waarde aan toekennen. Maar u kunt de methode System.setIn() gebruiken.

Eerst moeten we een buffer creëren en er vervolgens enkele waarden in stoppen. Vervolgens verpakken we het in een klasse die weet hoe gegevens uit de buffer moeten worden gelezen met behulp van het InputStream-protocol.

Zo ziet het eruit:

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! Dit is het interessantste voorbeeld dat ik ooit heb gezien. Ik wist niet dat je dat kon. Bedankt."

"Graag gedaan, Amigo."