Rumah > Soal Jawab > teks badan
帮朋友提问:
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 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
.
巴扎黑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....
迷茫2017-04-18 09:38:10
FileWriter fileWriter2 = new FileWriter(file2,true);
Buat FileWriter
dan tukar tambah pada true