CodeGym /Kurser /Java Core /Skriv din egen stream: ett omslag för System.in

Skriv din egen stream: ett omslag för System.in

Java Core
Nivå , Lektion
Tillgängliga

"Hej, Amigo! Idag ska vi utforska några superintressanta saker: hur man ersätter System.in-indataström ."

System.in  är en enkel statisk InputStream- variabel, men du kan inte bara tilldela ett nytt värde till den. Men du kan använda System.setIn()-metoden.

Först måste vi skapa en buffert och sedan lägga in några värden i den. Sedan lindar vi in ​​det i en klass som vet hur man läser data från bufferten med hjälp av InputStream-protokollet.

Så här ser det ut:

Koda
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! Det här är det mest intressanta exemplet jag har sett. Jag visste inte att du kunde göra det. Tack."

"Du är välkommen, Amigo."

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION