字符流:
FileReader
FileWriter
BufferedReader
BufferedWriter
readLine();
字节流:
FileInputReader
FileOutputWriter
BufferedInputstream
BufferedOutputstream
read();
字节流转字符流:
InputStreamReader
字符流转字节流:
OutputStreamWriter
input read是读入 从磁盘读到内存
output write是写出 从内存写到磁盘
Buffered****.read() 都是从内存中取数据,
FileReader.read(); 从硬盘上取数据
字符流的缓冲区
缓冲区的出现提高了对数据的读写效率
所以在创建缓冲区之前,必须要有流对象。
对应类
BufferedWriter
BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。
该缓冲区提供了一个跨平台的换行符。 newLine();
其实关闭缓冲区,就是在关闭缓冲区中的流对象。
bufw.close();
字符串取流缓冲区:
该缓冲区提供了一个一次读一行的方法,readLine,方便与文本数据的获取。
当返回null时,表示读到文件末尾。
readLine 方法返回的时候只返回回车符之前的数据内容,并不返回回车符
readLine 方法的原理 无论是读一行,获取读取多个字符,其实最终都是在硬盘上以一个读取。所以最终使用的还是read方法,一次读一个方法。
字节流:
InputStream OutputStram
需求,想要操作图片数据。这时需要用到字节流
如果直接使用字节流,没有指定使用缓冲区的话,是不用刷新的。
Buffered****.read() 都是从内存中取数据,
FileReader.read(); 从硬盘上取数据
读取键盘录入。
System.out:对应的是标准输出设备,控制台。
System.in:对应的是标准输入设备,键盘
Ctrl+z 往里面加结束标志或Ctrl+c
获取键盘录入对象。
将字节流对象转成字符流对象,使用转换流InputStreamReader
为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader;
字符流底层用的也是字节流那个缓冲区
键盘最常见写法
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
将字符流对象对象转成字节流
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节
BufferedWrite bufw = new BufferedWrite(new OutputStreamWriter(System.out));
Propertise a = System.getPropertise();获取系统属性。
log4j 异常日志处理软件
流操作的基本规律:
1 明确源和目的。
源:输入流 InputStream Reader
目的 :输出流 OutputStream Writer
2 操作的数据是否纯文本
是:字符流
不是:字节流
3 当体系明确后,在明确要使用哪个具体对象。
通过设备来区分。
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台。
记住,转化流什么时候用,字符与字节之间的桥梁,通常,涉及到字符编码转化时,
需要用到转化流