java bufferedReader 读出来为什么都是空的?
PHP中文网
PHP中文网 2017-04-18 09:36:10
0
3
467

帮朋友提问:

        File file1 = new File("D:\\a.txt");
        File file2 = new File("D:\\a.txt");
        FileWriter fileWriter2 = new FileWriter(file2);
        FileReader fileReader = new FileReader(file1);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        BufferedWriter bufferedWriter2 = new BufferedWriter(fileWriter2);
        String length = null;
            
        while((length=bufferedReader.readLine())!=null) {
            System.out.println(length);
            
            bufferedWriter2.write(length);
        }
        fileReader.close();
        bufferedWriter2.close();

这段代码为什么读到的length都是null?
我个人觉得是因为file1和file2同时打开a.txt,会出现读写冲突,导致都出来的都是null,不知大家怎么看?

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(3)
大家讲道理

Java IO beroperasi berdasarkan strim bait Sudah tentu, strim aksara juga dilengkapkan melalui strim bait di lapisan bawah Terdapat penunjuk tersirat untuk mewakili The semasa lokasi untuk membaca atau menulis.

@iMouseWu betul, kerana apabila objek FileOutputStream dicipta, ia akan melakukan operasi native open() Jika atribut append tidak dinyatakan sebagai true, penunjuk akan beralih ke permulaan fail , yang setara dengan mengosongkan operasi fail.

Sudah tentu FileWiter yang digunakan oleh subjek juga dilaksanakan melalui FileOutputStream.

    public FileWriter(File file, boolean append) throws IOException {
        super(new FileOutputStream(file, append));
    }

Selain itu, jika anda perlu membaca dan menulis fail pada masa yang sama, adalah disyorkan untuk menggunakan RandomAccessFile.

巴扎黑

Saya telah mengujinya new FileWriter(file2) dan kandungan fail telah dikosongkan secara automatik...
Tetapi saya menyemak dokumen itu dan ia tidak menyatakan bahawa kandungan itu boleh dikosongkan apabila menggunakan baharu....

迷茫

FileWriter fileWriter2 = new FileWriter(file2,true);
Buat FileWriter dan tukar tambah pada true

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan