Baru -baru ini, saya belajar aliran IO dan menemukan bahwa fungsi flush () muncul setiap saat. Saya memeriksa fungsinya dan fungsi utamanya adalah sebagai berikut
// ―66666666666 ACTE ―66666666666 AC6 ―66666666666 A /66666666666 AI6666666666 AI6 ―66666666666 A/66666666666 A/O]
Jawaban Umum dan Salah:
Data dalam buffer disimpan sampai buffer penuh. Anda juga dapat menggunakan metode flush untuk memaksa data dalam buffer untuk dituliskan atau menggunakan metode tutup () untuk menutup aliran. Sebelum menutup aliran, aliran output buffer menulis data buffer sekaligus. Flash () dan close () keduanya memaksa data untuk ditulis, sehingga kedua hasilnya sama. Jika Anda tidak menulisnya, Anda akan menemukan bahwa Anda tidak dapat berhasil menulisnya.
Menanggapi jawaban di atas, jawaban yang akurat diberikan
FileOutputStream mewarisi outputStream dan tidak menyediakan metode penulisan ulang flush (). Jadi tidak peduli berapa banyak konten yang menulis, itu akan langsung melewati aliran biner ke I/O dari sistem operasi yang mendasarinya. Flush tidak berpengaruh. Fungsi aliran input dan output dari seri buffered dapat dilihat dari kata buffered bahwa mereka menggunakan buffer. Aplikasi harus berkomunikasi dengan perangkat setiap kali IO, yang sangat rendah. Oleh karena itu, untuk meningkatkan efisiensi, buffer ditulis ke buffer terlebih dahulu saat menulis ke perangkat. Ketika buffer memiliki data yang cukup, itu akan ditulis ke perangkat secara keseluruhan.
Gunakan bufferedxxxstream. Ukuran buffer default adalah 8k. Saat membaca, buffer akan diisi (atau file dibaca) sepanjang waktu. Saat menulis, konten akan dikirim ke buffer kernel setelah buffer penuh (atau operasi flush). Alasan untuk efisiensi tinggi adalah untuk menghindari jatuh ke dalam kernel sistem operasi untuk setiap byte yang dibaca (ini adalah operasi yang memakan waktu). Untuk kode tertentu, silakan periksa API sendiri.
Saya juga akan melampirkan jawaban pertanyaan dari Baidu.
flush () berarti memaksa konten buffer untuk ditulis. Karena mekanisme tertentu dari sistem operasi, untuk mencegah pembacaan dan penulisan disk berkelanjutan, ada konsep penulisan tertunda. (Berhati -hatilah untuk tidak bingung dengan penyegaran buah ()), ini terutama digunakan dalam IO, yaitu, membersihkan data buffer. Secara umum, ketika membaca dan menulis aliran, data pertama kali dibaca ke dalam memori dan kemudian ditulis ke dalam file. Ketika Anda membaca data, itu tidak berarti bahwa data Anda telah ditulis, karena masih ada bagian dari itu yang mungkin ditinggalkan dalam buffer memori. Pada saat ini, jika Anda memanggil metode tutup () dan menutup aliran baca dan tulis, maka bagian data ini akan hilang, jadi Anda harus menyiram () sebelum menutup aliran baca dan tulis. .
Hal yang sama berlaku di server web jaringan. Untuk mencegah pesan dari dikirim setelah menulis byte, ada konsep buffer, seperti area memori 64K, ketika buffer penuh, ditulis ke disk sekaligus (atau dikirim ke browser klien).
Metode flush umumnya dijalankan ketika program menulis selesai. Kemudian ikuti metode tutup. Misalnya:
// Dapatkan aliran output. Tentu saja, itu tergantung pada lingkungan tertentu. Printwriter out = util.getWriter (); out.println ("output beberapa informasi, mungkin banyak"); out.flush (); out.close ();Sederhananya, metode flush () adalah untuk mengeluarkan semua konten yang disimpan dalam memori (output batch). Umumnya digunakan, misalnya, adalah contoh khas dalam kelas FileWriter. Selain menggunakan output flush, panggilan terakhir ke metode tutup juga akan menjadi output batch.
Impor java.io.filewriter; import java.io.ioException; kelas publik A04 {public static void main (string args []) {fileWriter fw; coba {fw = filewriter baru ("c: //try.txt"); fw.write ("hello");//fw.close () ()); fw.write ("hello");/fw.close // Kalimat ini tidak ditambahkan, file tidak dapat ditulis, dan file kosong! System.out.println ("OK"); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); }}}Meringkaskan
Di atas adalah semua isi artikel ini tentang peran dan metode penggunaan fungsi flush dalam bahasa Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!