Maison > Questions et réponses > le corps du texte
帮朋友提问:
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,不知大家怎么看?
大家讲道理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
.
巴扎黑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....
迷茫2017-04-18 09:38:10
FileWriter fileWriter2 = new FileWriter(file2,true);
Créez FileWriter
et modifiez l'ajout en true