Rumah >Java >javaTutorial >Mengapa Java BufferedWriter Saya Menghasilkan Tulisan Tidak Lengkap pada Fail?

Mengapa Java BufferedWriter Saya Menghasilkan Tulisan Tidak Lengkap pada Fail?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 13:58:10621semak imbas

Why Does My Java BufferedWriter Result in Incomplete Writes to a File?

Isu Tulisan Tidak Lengkap BufferedWriter

Dalam atur cara Java yang disediakan, kod tersebut menghadapi isu di mana BufferedWriter keluar gagal menulis sepenuhnya semua yang dimaksudkan teks ke fail output nyccrash.sql. Ini mengakibatkan penyataan SQL tidak lengkap dan data hilang dalam output.

Punca penulisan tidak lengkap adalah disebabkan saiz penimbal lalai BufferedWriter, yang ditetapkan kepada 8192 aksara. Ini bermakna bahawa operasi tulis kepada BufferedWriter tidak akan segera disalurkan ke fail asas sehingga penimbal mencapai kapasitinya.

Dalam senario yang diberikan, atur cara memproses lebih 10,000 baris data input, menjana jumlah yang besar rentetan SQL yang melebihi saiz penimbal. Akibatnya, penimbal menjadi penuh dan menyimpan beberapa ratus baris data tidak bertulis.

Untuk menangani isu ini, adalah penting untuk mengepam penimbal secara manual dengan memanggil kaedah close() pada BufferedWriter selepas operasi tulis selesai . Tindakan ini memastikan bahawa semua data yang tinggal dalam penimbal ditulis pada fail sebelum ia ditutup, menyelesaikan masalah penulisan yang tidak lengkap.

Kod yang diperbetulkan di bawah termasuk panggilan tutup():

...
            while ((line = in.readLine()) != null) {
                String[] esa = line.split(",");
                sqlstr = "insert into nyccrash values (" + esa[0] + ", " + esa[1] + ", " + esa[2] + ", " + esa[3] + ", " + esa[4] + ", " + esa[5] + ", " + esa[6] + ");\n";
                out.write(sqlstr);
            }
            out.close();
        }
...

Atas ialah kandungan terperinci Mengapa Java BufferedWriter Saya Menghasilkan Tulisan Tidak Lengkap pada Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn