Maison  >  Questions et réponses  >  le corps du texte

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 Il y a quelques jours431

répondre à tous(3)je répondrai

  • 大家讲道理

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

    Java IO fonctionne sur la base d'un flux d'octets Bien sûr, le flux de caractères est également complété via un flux d'octets au niveau de la couche inférieure. Il y a un pointeur implicite pour représenter le courant. emplacement à partir duquel lire ou écrire.

    @iMouseWu a raison, car lorsque l'objet FileOutputStream est créé, il effectuera une opération native open() Si l'attribut append n'est pas spécifié comme true, le pointeur se déplacera vers le. début du fichier, ce qui équivaut à effacer l’opération sur le fichier.

    Bien sûr, le FileWiter utilisé par le sujet est également implémenté via FileOutputStream.

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

    De plus, si vous devez lire et écrire des fichiers en même temps, il est recommandé d'utiliser RandomAccessFile.

    répondre
    0
  • 巴扎黑

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

    Je l'ai testé new FileWriter(file2) et le contenu du fichier a été automatiquement effacé...
    Mais j'ai vérifié le document et il ne stipule pas que le contenu peut être effacé lors de l'utilisation du nouveau....

    répondre
    0
  • 迷茫

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

    FileWriter fileWriter2 = new FileWriter(file2,true);
    Créez FileWriter et modifiez l'ajout en true

    répondre
    0
  • Annulerrépondre