Silakan lihat kode di bawah ini:
// A.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);
// B.class
File file = new File("blah.txt");
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bWriter = new BufferedWriter(fileWriter);
Apa perbedaan antara kedua metode ini?
Kapan kita harus menggunakan PrintWriter melalui BufferedWriter?
sumber
PrintWriter
memberikan lebih banyak metode (println
), tetapi perbedaan yang paling penting (dan mengkhawatirkan) untuk diperhatikan adalah bahwa ia menelan pengecualian .Anda dapat menelepon
checkError
nanti untuk melihat apakah ada kesalahan yang telah terjadi, tetapi biasanya Anda akan menggunakanPrintWriter
untuk hal-hal seperti menulis ke konsol - atau di aplikasi "cepat 'n kotor" di mana Anda tidak ingin diganggu oleh pengecualian (dan di mana keandalan jangka panjang bukanlah masalah).Saya tidak yakin mengapa aspek "kemampuan pemformatan ekstra" dan "jangan menelan pengecualian" digabungkan ke dalam kelas yang sama - pemformatan jelas berguna di banyak tempat di mana Anda tidak ingin pengecualian ditelan. Akan menyenangkan melihat
BufferedWriter
mendapatkan kemampuan yang sama di beberapa titik ...sumber
PrintStream
adalahOutputStream
.PrintWriter
adalah aWriter
.IOException
, di mana setiap abstraksi IO lainnya (Reader
,Writer
dll) menyatakan bahwa metodenya membuangIOException
jika ada yang salah -PrintWriter
tidak.Seperti yang dikatakan dalam jawaban TofuBeer, keduanya memiliki spesialisasi. Untuk mengambil keuntungan penuh dari PrintWriter (atau penulis lain) tetapi juga menggunakan penulisan buffer, Anda dapat membungkus BufferedWriter dengan yang dibutuhkan seperti ini:
sumber
PrinterWriter
sudah membuat fileBufferedWriter
.PrintWriter hanya mengekspos metode cetak pada Writer manapun dalam mode karakter.
BufferedWriter lebih efisien daripada, menurut metode buffernya. Dan itu datang dengan metode newLine (), tergantung dari platform sistem Anda, untuk memanipulasi file teks dengan benar.
BufferedReader mengizinkan untuk membaca teks dari file, dengan byte yang dikonversi dalam karakter. Ini memungkinkan untuk membaca baris demi baris.
Tidak ada PrintReader, Anda harus memilih implementasi Reader lain sesuai dengan format masukan Anda.
sumber
PrintWriter adalah Writer yang paling canggih untuk menulis data Karakter ke file.
Keuntungan utama PrintWriter dibandingkan FileWriter dan BufferedWriter adalah:
PrintWriter printwriter = new PrintWriter("blah.txt");
(atau)
Kita dapat menulis semua jenis data Primitive langsung ke file (karena kita memiliki versi metode PrintWriter tambahan yang kelebihan beban yaitu, print () dan println ()).
printwriter.print(65); //65
bufferedwriter.write(65); //A
printwriter.println(true); //true
sumber
Secara umum, Writer mengirimkan outputnya segera ke aliran byte atau karakter yang mendasarinya. Kecuali jika output prompt diperlukan, disarankan untuk menggabungkan BufferedWriter di sekitar Writer yang operasi write () mungkin mahal, seperti FileWriters dan OutputStreamWriters. Sebagai contoh,
Catatan: Konten teks dalam blok kode secara otomatis dibungkus kata
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
akan menyangga keluaran PrintWriter ke file. Tanpa buffering, setiap pemanggilan metode print () akan menyebabkan karakter diubah menjadi byte yang kemudian akan langsung ditulis ke file, yang bisa sangat tidak efisien.
sumber
BufferedWriter - Menulis teks ke aliran karakter keluaran, menyangga karakter dari aliran karakter. PrintWriter - Mencetak representasi objek yang diformat ke aliran output teks.
sumber
Saya pikir alasan di balik menggunakan PrintWriter sudah disebutkan di atas tetapi salah satu alasan penting adalah Anda mengirimkan objek file langsung ke konstruktor PrintWriter yang membuatnya mudah untuk menggunakannya.
sumber