Di Java, flush()
metode digunakan dalam aliran. Tetapi saya tidak mengerti apa tujuan menggunakan metode ini?
fin.flush();
beri tahu saya beberapa saran.
java
java-stream
flush
Venkat
sumber
sumber
Ketika kami memberikan perintah apa pun, aliran perintah itu disimpan di lokasi memori yang disebut buffer (lokasi memori sementara) di komputer kami. Ketika semua lokasi memori sementara penuh maka kami menggunakan flush (), yang membersihkan semua aliran data dan mengeksekusinya sepenuhnya dan memberikan ruang baru untuk aliran baru di lokasi sementara buffer. -Harap Anda akan mengerti
sumber
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
danPrintXXX
kelas. Theflush()
Metode dari setiap aliran lain atauWriter
tidak apa-apa.flush()
secara eksplisit tidak diperlukan untukBufferedWriter
, selama Andaclose()
penulisnya.close()
menjalankan flush itu sendiri.close()
panggilanflush()
, jadi memanggil keduanya berlebihan saat menggunakanFileWriter
tanpa buffer.Saat Anda menulis data ke aliran, data tidak langsung ditulis, dan di-buffer. Jadi gunakan
flush()
saat Anda perlu memastikan bahwa semua data Anda dari buffer ditulis.Kita perlu memastikan bahwa semua penulisan telah selesai sebelum kita menutup aliran, dan itulah sebabnya
flush()
disebut dalam file / buffered writerclose()
.Tetapi jika Anda memiliki persyaratan bahwa semua tulisan Anda disimpan kapan saja sebelum Anda menutup streaming, gunakan
flush()
.sumber
FilterOutputStream
danFilterWriter
.Jika buffer sudah penuh, semua string yang di-buffer di dalamnya, mereka akan disimpan ke disk. Buffer digunakan untuk menghindari Transaksi Besar! dan overhead.
Di kelas BufferedWriter yang ditempatkan di java libs, ada satu baris seperti:
buku referensi: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
halaman: 453
sumber
Stream sering diakses oleh utas yang secara berkala mengosongkan kontennya dan, misalnya, menampilkannya di layar, mengirimkannya ke soket, atau menuliskannya ke file. Ini dilakukan untuk alasan kinerja. Membilas aliran keluaran berarti Anda ingin berhenti, menunggu konten aliran sepenuhnya ditransfer ke tujuannya, lalu melanjutkan eksekusi dengan aliran kosong dan konten dikirim.
sumber
Untuk masalah kinerja, data pertama harus ditulis ke dalam Buffer. Ketika buffer penuh maka data ditulis ke output (File, konsol, dll.). Ketika buffer terisi sebagian dan Anda ingin mengirimkannya ke output (file, konsol) maka Anda perlu memanggil metode flush () secara manual untuk menulis buffer yang terisi sebagian ke output (file, konsol).
sumber