帮朋友提问:
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,不知大家怎么看?
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érationnative
open()
Si l'attributappend
n'est pas spécifié commetrue
, 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é viaFileOutputStream
.De plus, si vous devez lire et écrire des fichiers en même temps, il est recommandé d'utiliser
RandomAccessFile
.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....
FileWriter fileWriter2 = new FileWriter(file2,true);
Créez
FileWriter
et modifiez l'ajout entrue