以下内容基于张孝祥老师视频课程笔记:
在我们遇到需要使用流进行数据传输时,最痛苦的就是流对象很多,但不知道该用哪一个流对象。我们可以通过三个明确来完成:
1、明确源和目的:
源---输入流: 字节流 InputStream、字符流 Reader
目的---输出流:字节流 OutputStream、字符流 Writer
2、操作的数据是否为纯文本(用来明确体系:目的和源都要明确一遍)?
是:用字符流 不是:用字节流
注:字节流一般用来操作字节,可用于文本、音频、图片等类型文件;
而字符流一般用来操作字符,一般用来操作纯文本文件(包括键盘输入(System.in)、控制台输出(System.out)和文本文件)。
3、当体系明确后,再明确要使用哪个具体对象:
通过设备来区分:源设备:内存、硬盘、键盘
目的设备:内存、硬盘、控制台
4、最后看是否需要缓冲区来提供效率:可将相应对象加入相应缓冲区装饰。
在我的理解中,有以下两类缓冲区:
①、自定义的缓冲区:定义字节数组:byte[] buf=new byte[1024];
定义字符数组: char[] buf =new char[1024];
使用输入流的read方法将数据写入数组缓冲区可起到相应缓冲作用(但如果数据较大不建议使用此缓冲区,防止内存溢出)。
②、字节字符流自带缓冲区: 字节流:BuffredInputStream 、BufferedOutputStream
字符流:BufferedReader 、BufferedWriter、CharArrayReader、CharArrayWriter、StringReader、StringWriter
此帖是视频课内容加上我自身见解所写,有不足之处望各位不吝赐教,谢谢!
|
|