帮朋友提问:
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 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 operasinative
open()
Jika atributappend
tidak dinyatakan sebagaitrue
, penunjuk akan beralih ke permulaan fail , yang setara dengan mengosongkan operasi fail.Sudah tentu
FileWiter
yang digunakan oleh subjek juga dilaksanakan melaluiFileOutputStream
.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 padatrue