"Здравей, Амиго! Днес ще проучим някои супер интересни неща: How да заменим входния поток System.in ."
System.in е проста статична променлива на InputStream , но не можете просто да й присвоите нова стойност. Но можете да използвате метода System.setIn().
Първо, трябва да създадем буфер и след това да поставим някои стойности в него. След това ще го обгърнем в клас, който знае How да чете данни от буфера, използвайки протокола InputStream.
Ето How изглежда:
Код
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();
}
"Билаабо! Това е най-интересният пример, който съм виждал. Не знаех, че можеш да го направиш. Благодаря."
— Няма за Howво, Амиго.
GO TO FULL VERSION