Rumah  >  Soal Jawab  >  teks badan

java bufferedReader 读出来为什么都是空的?

帮朋友提问:

        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中文网2741 hari yang lalu432

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-18 09:38:10

    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.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:38:10

    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....

    balas
    0
  • 迷茫

    迷茫2017-04-18 09:38:10

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

    balas
    0
  • Batalbalas