前几天被一个东西弄得有点懵圈,才发现,其实字节流底层也是字节,不过它是一个带有编码和解码的字节,所以它可能自带一些缓存,你如果不把流关闭,最新的数据就传不进去。
举例:比如说我要用字符流输出流把字符串”aaa“存到某个文件中
public class SeriaTest2 {
public static void main(String[] args) {
try(FileWriter fileWriter = new FileWriter("./resources/aa.txt");
FileReader fileReader = new FileReader("./resources/aa.txt")){
fileWriter.write("aaa");
// fileWriter.close();
int m;
while((m=fileReader.read())!=-1) {
System.out.println(m);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
你会发现打印出来为空,因为内容还存在缓存中呢,等流关闭了,才会写进去。
*有两种方法可以防止此类错误,第一种就是上图所示的,写完之后理解关闭流fileWriter.close();
第二种方式是,输入流和输出流分开来写,别都整在一个try()里面。其实原理也是和第一种一样,都是让写入流先关闭。