BufferedReader adalah kelas sederhana yang dimaksudkan untuk membaca secara efisien dari aliran bawahan. Secara umum, setiap permintaan baca yang dibuat dari Pembaca seperti FileReader menyebabkan permintaan baca yang sesuai dibuat untuk aliran yang mendasarinya. Setiap doa read () atau readLine () dapat menyebabkan byte dibaca dari file, dikonversi menjadi karakter, dan kemudian dikembalikan, yang bisa sangat tidak efisien. Efisiensi ditingkatkan secara signifikan jika Reader dibengkokkan dalam BufferedReader.
BufferedReader disinkronkan, jadi baca operasi pada BufferedReader dapat dilakukan dengan aman dari banyak utas.
Pemindai di sisi lain memiliki lebih banyak keju yang melekat di dalamnya; ini dapat melakukan semua yang dapat dilakukan oleh BufferedReader dan pada tingkat efisiensi yang sama. Namun, selain itu Pemindai dapat mengurai aliran yang mendasarinya untuk tipe dan string primitif menggunakan ekspresi reguler. Itu juga dapat mengurangi aliran yang mendasarinya dengan pembatas pilihan Anda. Itu juga dapat melakukan pemindaian ke depan dari aliran yang mendasarinya mengabaikan pembatas!
Namun pemindai tidak aman untuk benang, itu harus disinkronkan secara eksternal.
Pilihan menggunakan BufferedReader atau Scanner tergantung pada kode yang Anda tulis, jika Anda menulis pembaca log sederhana Pembaca buffer cukup memadai. Namun jika Anda menulis Pemindai parser XML adalah pilihan yang lebih alami.
Bahkan saat membaca input, jika ingin menerima input pengguna baris per baris dan katakan hanya menambahkannya ke file, BufferedReader sudah cukup baik. Di sisi lain, jika Anda ingin menerima input pengguna sebagai perintah dengan banyak opsi, dan kemudian berniat untuk melakukan operasi yang berbeda berdasarkan perintah dan opsi yang ditentukan, Scanner akan lebih cocok.