CodeGym /Kursus Java /Teras Java /Tulis strim anda sendiri: pembungkus untuk System.in

Tulis strim anda sendiri: pembungkus untuk System.in

Teras Java
Tahap , pelajaran
Tersedia

"Helo, Amigo! Hari ini kita akan meneroka beberapa perkara yang sangat menarik: cara menggantikan strim input System.in ."

System.in  ialah pembolehubah InputStream statik yang mudah , tetapi anda tidak boleh hanya memberikan nilai baharu kepadanya. Tetapi anda boleh menggunakan kaedah System.setIn().

Pertama, kita perlu mencipta penimbal, dan kemudian meletakkan beberapa nilai ke dalamnya. Kemudian kami akan membungkusnya dalam kelas yang tahu cara membaca data daripada penimbal menggunakan protokol InputStream.

Begini rupanya:

Kod
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! Ini contoh paling menarik yang pernah saya lihat. Saya tidak tahu anda boleh melakukannya. Terima kasih."

"Sama-sama, Amigo."

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