BufferedReader merupakan salah satu class yang paling banyak digunakan dalam pemrograman Java. Pada kesempatan kali ini kita akan mencoba memahami syntax dasar, penggunaan method dan juga prinsip dari class tersebut untuk membaca input dari user.
Berikut ini adalah hirarki dari class tersebut:
java.lang.Object java.io.Reader java.io.BufferedReader
Fungsi dasar dari BufferedReader adalah membaca file dari input stream. Lebih spesifik lagi bahwa class ini digunakan sebagai buffer dari karakter-karakter dengan tujuan membuat penanganan yang lebih efisien untuk string, character, dan array.
Terdapat dua constructor untuk class BufferedReader ini, yaitu:
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
Namun, agar lebih mudah untuk memahaminya, maka kita hanya akan menggunakan constructor yang pertama dimana constructor itu hanya mengambil Reader sebagai argumennya.
Berikut ini adalah contoh bagaimana membuat objek dari class BufferedReader:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
Contoh kode program:
package com.bahasajava.io; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //Membaca input dari user melalui konsol dengan menggunakan BufferedReader public class ContohBufferedReader { public static void main(String[] args) { //Membuat objek BufferedReader BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); //Membuat user prompt untuk menginput nama System.out.print("Masukkan nama anda: "); //Membuat objek StringBuffer StringBuffer stringBuffer = new StringBuffer("Selamat datang "); //Membaca input dari user try { //Menggabungkan string Selamat datang dengan baris text yang berasal dari //input oleh user stringBuffer.append(bufferedReader.readLine()); //menutup objek BufferedReader bufferedReader.close(); //Menampilkan string setelah menerima input dari user System.out.println(stringBuffer); //Menangkap exception yang mungkin terlempar ketika user memasukkan input } catch (IOException e) { System.out.println("Error terjadi ketika mencoba mendapatkan input dari user: " + e.getMessage()); e.printStackTrace(); } } }
Output:
Masukkan nama anda: Casmidi Asli Selamat datang Casmidi Asli
BufferedReader input user
Jadi apa sebenarnya maksud dan tujuan dari contoh program di atas? Pada dasarnya program itu hanya mendapatkan input pengguna dari konsol dan kemudian mencetak pesan selamat datang.
Selanjutnya mari kita pahami setiap bagian kode tersebut. Pertama-tama, objek BufferedReader dibuat dengan konstruktor yang menggunakan Reader sebagai argumen. Setelah itu, user akan diminta memasukkan namanya pada konsol melalui keyboard dengan System.out.print (“Masukkan nama Anda: “).
Kemudian objek StringBuffer diinisialisasi dengan konten inisial “Selamat datang “. Silakan anda membaca mengenai StringBuffer untuk memahaminya lebih lanjut. Tujuan dari mendeklarasikan StringBuffer “stringBuffer” adalah untuk mempersiapkan pesan selamat datang, yaitu “Selamat datang NamaUser”.
Kemudian input pengguna berupa baris text dibaca menggunakan method class BufferedReader yaitu readLine(). Metode ini akan mengembalikan baris lengkap dari representasi String sesuai dengan apa yang telah dimasukkan oleh user pada konsol.
Hasil dari method readLine() itu digabungkan dengan konten StringBuffer menggunakan method append(). Method close() dipanggil untuk menutup stream sehingga dapat menghindari kebocoran memori (memory leak) dan komplikasi lebih lanjut pada kode program tersebut.
Anda mungkin juga memperhatikan bahwa pada kode tersebut terdapat blok try-catch dan ini merupakan bagian dari exception handling. Hal ini dikarenakan readLine() dan close () melemparkan IOException sehingga anda harus menangkapnya (catch) atau melemparkannya (throw) kembali.
Dengan demikian jika terjadi error pada saat mendapatkan input dari user maka anda akan mendapatkan pesan dan stack trace lengkap mengenai apa yang terjadi.
sumber :
Membaca input user menggunakan class bufferedreader java