因此,我试图制作一个仅使用FileWriter和FileReader即可编写然后读取完全相同的文本文件的程序,但是由于某些原因,当我将这两个类都放在同一代码中时,FileWriter可以正常工作,但FileReader却没有,我得到的输出为空。
import java.io.*;
import java.util.Scanner;
public class ex2 {
public static void main(String[] args) {
File file = new File("C:\\a.txt");
Scanner scanner = new Scanner(System.in);
try {
FileReader reader = new FileReader(file);
FileWriter writer = new FileWriter(file);
writer.write(scanner.nextLine());
int ch;
while ((ch = reader.read()) != -1) {
System.out.println((char)ch);
}
scanner.close();
reader.close();
writer.close();
} catch (Exception e) {
}
}
}
这就是我在说的代码。我可以将任何内容写入a.txt,但阅读器似乎无法读取内容。奇怪的是,如果我使用完全相同的代码,但没有文件编写部分,则FileReader可以正常工作。我究竟做错了什么?预先感谢!
答案 0 :(得分:2)
FileWriter
对象被缓冲。这意味着一旦您致电write
,他们就不会写您给他们的所有东西。他们将等到要写入一定数量后再一次写入所有内容。只需添加以下行:
writer.flush();
介于写作和阅读之间。