一、IO流的四大抽象类(其他流都分别继承这四大类):InputStream OutputStram Reader Writer;
1. 流的方向:
输入流:InputStream Reader.
输出流:OutputStram Writer
2.流的数据单位:
字节流(可以读取一切,图片.视频等):InputStream OutputStram ;
字符流(只能读纯文本,即文字类): Reader Writer;
二、功能流:
1.转换流:解码与编码的字符集问题(字节与字符的转换)
InputStreamReader ---------解码
OutputStreamWriter --------编码
2.缓冲流:提高性能(用空间换时间)
输入流:BefferedInputStream BefferedReader;
输出流:BefferedOutputStream BefferedWriter;
三、流的选择与操作:
1.字节流:(可以读取一切,图片.视频等)
输入流: InputStream FileInputStream ByteArrayInputStream
操作:read(字节数组)
a.中间容器:byte[] flush = new byte[长度];
b.接收长度:int len = 0;
c.循环读取:while((len = 输入流.read(flush)!= -1)){ };
d.操作:输出、拷贝;
输出流:OutputStream FileOutputStream ByteArrayOutputStream
操作:write(字节数组,0,长度);输出
2.字符流:(只能读纯文本,即文字类)
输入流: Reader FileReader CharArrayReader
操作:read(字符数组)
a.中间容器:char[] flush = new char[长度];
b.接收长度:int len = 0;
c.循环读取:while((len = 输入流.read(flush)!= -1)){ };
d.操作:输出、拷贝;
输出流: Writer FileWriter CharArrayWriter
操作:write(字符数组,0,长度);输出
3.处理数据+类型:基本+字符串:必须存在才能读取,读取与写出的顺序要一致
输入流:DataInputStream ReadXXX;
输出流:DataOutputStream WriteXXX;
引用类型:Serizlizable transient
反序列化:ObjectInputStream ReaderObject;
序列化:ObjectOutputStream WriteObject;
4.管道流(线程间):
输入流:PipedInputStream PipedReader;
输出流:PipedOutputStream PipedWriter;
四、附上几张流的层次图:
整理得好累啊!!!