Pertanyaan Bagaimana Anda bisa membuat BufferedReader.readLine () tidak hang?


Apakah ada cara untuk membuatnya BufferedReader.readLine() tidak menggantung?

Saya membuat server yang:

  • Memeriksa apakah klien telah mengirimkan masukan apa pun.
  • Jika tidak, ia akan mengeksekusi kode lain dan akhirnya kembali ke pengecekan klien untuk input.

Bagaimana saya dapat memeriksa apakah klien telah mengirimkan masukan apa pun tanpa menjalankannya readLine()? Jika saya jalankan readLine(), utas akan menggantung sampai masukan dikirimkan?


5
2018-03-19 21:30


asal


Jawaban:


Kamu dapat memakai BufferedReader.ready(), seperti ini:

BufferedReader b = new BufferedReader(); //Initialize your BufferedReader in the way you have been doing before, not like this.

if(b.ready()){
    String input = b.readLine();
}

ready() akan kembali true jika sumber input belum memasukkan apa pun ke dalam aliran yang belum dibaca.

Edit: Sekedar catatan, siap akan kembali true setiap kali bahkan hanya ada satu karakter. Kamu dapat memakai read() untuk memeriksa apakah ada feed line atau carriage return, dan itu akan menunjukkan akhir baris.

Untuk info lebih lanjut: http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#ready ()


8
2018-03-19 21:30