背景:

1、向文件里写入数据

2、读取文件里刚刚写入的数据,发现没读到

原因:

就是因为在写入磁盘过程中,还没写完呢(写入不是直接写到磁盘上的,是有个缓冲的),就是开始读了

解决办法:

使用fileWriter.flush();强制将缓冲刷新到磁盘上

package day04.io_class;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
// 输入输出,是对于内存来说的,所以读,是输入流,写是输出流(从内存写到磁盘)

public class CharIoStream {
public static void main(String[] args){
String path ="out/b.txt";
try (FileWriter fileWriter = new FileWriter(path,true);
FileReader in = new FileReader(path);){
fileWriter.write("大家好\n".toCharArray());
fileWriter.write("\t我是哈哈".toCharArray());
/*
注意,这里有一个细节,1我们先写,2我们再读,发现读的数据不是写的内容
就是因为在写入磁盘过程中,还没写完呢,就是开始读了
使用fileWriter.flush();强制将缓冲刷新到磁盘上
*/

fileWriter.flush();
char[] chars = new char[128];
int n = 0;
while ((n=in.read(chars))!=-1){
String str =new String(chars,0,n);
System.out.println(str);

}
}catch (Exception e){
e.printStackTrace();
}


}
}