一、如下分类
二、字节流
字节流读数据
如下是一个文件复制代码,之所以如下write方法要加长度,一是因为read方法不是覆盖去读,
如下是缓冲流说明,缓冲流中数组是在内存中的,肯定比字节流直接写到硬盘要快啊。
三、字符流
如下是相关编码解码常识
如下是java中编码和解码的一些用法
因为字节流读取中文会出现乱码问题(根本原因是编码和解码方法不一致),但是字符流本来就一个个字符的操作,也减少了乱码问题,所以总结如下
在如上字符流总结中可以看出,字符流有flush方法,但是前面的字节流没有,字符流如果不执行刷新流,是不像字节流那样直接写进硬盘的。
四、转换流(代码中如下两个类是FileWriter和FileReader的父类)
转换流如下,并且可以指定编码,防止乱码,但是jdk11之后FileReader的构造函数也可以指定编码,此时就不用单独用转换流了。
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("demo1\\hhh.txt"),"GB18030");
int read = inputStreamReader.read(); //这样指定编码就不是FileInputStream的read方法返回一个字节了,而是转换流InputStreamReader的read方法,是返回一个字符,这也照应了上面说明是字节到字符的
转换流
System.out.println((char)read);
五、如下是对象操作流(ObjectOutputStream和ObjectInputStream)
六、如下是Properties中与流相关的操作,properties继承map,所以有map的许多方法
样例使用如下