BufferedWriter Tidak Menulis Sepenuhnya ke Fail Output: Memahami Isu dan Penyelesaian
Di Java, apabila mencipta BufferedWriter untuk menulis data ke output fail, adalah penting untuk memahami mekanisme penimbal untuk memastikan penghantaran data yang lengkap. Penampan dalaman BufferedWriter menyimpan data sebelum mengalirkannya ke aliran keluaran asas. Ini meningkatkan prestasi dengan mengurangkan bilangan operasi tulis, tetapi ia juga boleh menyebabkan data tidak lengkap jika tidak ditutup dengan betul.
Dalam kes anda, program anda nampaknya ditamatkan sebelum waktunya semasa menulis pernyataan SQL pada fail, mengakibatkan data hilang. Ini menunjukkan bahawa penimbal BufferedWriter tidak disiram sepenuhnya sebelum program tamat.
Penyelesaian terletak pada menutup BufferedWriter apabila anda selesai menulis kepadanya. Tindakan ini mencetuskan kaedah flush(), yang mengosongkan penimbal dan menghantar data yang tinggal ke aliran keluaran asas. Dengan menambah baris:
out.close();
ke penghujung kod anda, anda memastikan bahawa semua data yang telah anda tulis kepada BufferedWriter sebenarnya ditulis pada fail output.
Ingat, tutup BufferedWriter juga menutup FileWriter asas, yang seterusnya menutup OutputStream. Dengan menutup BufferedWriter, anda menjamin bahawa semua data yang belum selesai disiram dan dihantar dengan selamat ke fail. Ini menghapuskan potensi kehilangan data atau pemangkasan yang mungkin berlaku disebabkan oleh BufferedWriter yang tidak ditutup.
Atas ialah kandungan terperinci Mengapa BufferedWriter Saya Tidak Menulis Semua Data ke Fail dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!