„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
{
//Daten in eine Zeichenkette einfügen
StringBuilder sb = new StringBuilder();
sb.append("Lena").append('\n');
sb.append("Olya").append('\n');
sb.append("Anya").append('\n');
String data = sb.toString();
//Hülle die Zeichenkette in ein ByteArrayInputStream ein
InputStream is = new ByteArrayInputStream(data.getBytes());
//Ersetzen in
System.setIn(is);
//Gewöhnliche Methode aufrufen, die nichts von unseren Änderungen weiß
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.“
GO TO FULL VERSION