Java IO adalah titik pengetahuan yang besar.
Jika Anda memecah poin pengetahuannya dan membicarakannya, itu mungkin akan seminggu. Untuk sistem IO, Anda dapat melihat gambar berikut.
Selanjutnya, mari kita mulai dengan sepotong kode, mari kita lihat kode berikut
tes kelas publik {public static void main (string [] args) melempar pengecualian {file file = file baru ("text.txt"); if (! file.exists ()) {file.createNewFile (); } FileOutputStream fos = new FileOutputStream (file); BufferedOutputStream bos = baru bufferedoutputStream (fos); byte [] b = byte baru [1024]; Bos.write (b); bos.flush (); }} Aliran buffered dibangun dalam kode, dan kemudian data panjang-KB ditulis ke dalam aliran, dan akhirnya metode flush () dipanggil.
Ini adalah bagian kode yang sangat sederhana, dan output akhir adalah untuk menghasilkan file teks 1KB.
Tapi jika kita mengomentari baris terakhir
//bos.flush ();
Ukuran teks terakhir yang dihasilkan akan menjadi 0.
Hasil ini sangat jelas, tetapi jika kita mengubah flush () menjadi tutup (), akankah hasilnya masih 0?
Tentang flush
Flush () sebenarnya ditemukan dalam transmisi jaringan sejak lama
Pada saat itu, untuk efisiensi, server dan klien tidak akan mengirimkan sepotong data setiap kali dihasilkan.
Sebaliknya, buffer akan dibuat dan data akan ditransfer ke klien setelah buffer penuh.
Terkadang ada masalah seperti itu. Ketika data tidak cukup untuk mengisi buffer dan data perlu ditransmisikan ke klien, untuk menyelesaikan masalah ini, ada konsep flush, dan data buffer dipaksa untuk dikirim.
Kembali ke pertanyaan di atas, apakah layak untuk menggantikan flush dengan dekat
Jawabannya adalah ya.
Jika Anda melihat kode sumber, Anda akan mengetahui hubungan warisan dari bufferedoutputStream
BUFFEROUTPUTTREAM CLASS PUBLIK Extends FilterOutputStream
BufferedOutputStream tidak mengimplementasikan metode tutup (), sehingga akan secara langsung memanggil close () dari FilterOutputStream, dan metode tutup () dari FilterOutputStream akan memanggil flush () untuk mengeluarkan data buffer.
Dalam pengembangan aktual, mengenai operasi IO, ditekankan bahwa metode tutup () harus dipanggil pada akhirnya. Contoh di atas adalah salah satu alasannya.