总结流:
流:节点流
处理流
一、节点流:离数据源程序最近的流
1、 节点流:可以处理一切(纯文本,音频,视频等)
1)、输入流:InputStream,FileInputStream,ByteArrayInputStream
操作:read(字节数组)
a)、中间容器:byte[] flush=new byte[长度];//用来接收读取到的内容
b)、接收长度:int len;//记录读到的内容的长度,当len=-1时,表明读取结束
c)、循环读取while(-1!=(len=流.read(flush)){//将读取的内容存放在flush中
System.out.println(new String(flush,0,len));//将flush数组以字符串形式输出
}
d)、操作:拷贝等
2)、输出流:OutputStream,FileOutputStream,ByteArrayOutputStream
操作:write(字节数组,0,长度)
2、 字符流:只能处理纯文本
1)、输入流:Reader FileReader
操作:read(字符数组)
a)、中间容器 char[] flush=new char[长度];
b)、接收长度 intlen=0;
c)、循环读取while(-1!=(len=流.read(flush))){}
d)、操作:输出、拷贝等
2)、输出流:Writer FileWriter【write()后不要忘记强制刷新】
操作:write(数组长度,0,长度) 输出
二、处理流:装饰模式,提高性能增强功能
1、 转换流:解码和编码字符集问题【出现乱码情况,解码编码方式不统一;数组长度不够】
1)、InputStreamReader-->解码【将字节流转换为字符流,指定解码方式】
2)、OutputStreamWriter-->编码
2、缓冲流:提高性能
1)、输入流:BufferedInputStream BufferedReader
2)、输出流:BufferedOutputStream BufferedWriter
3、处理数据+类型
1)、基本数据+字符串:必须存在才可以读取,也就是说必须先写再读取,读取与写出
顺序一致
a)、输入流:DataInputStream readXxx
b)、输出流:DataOutputStream writeXxx
2)、引用类型:Serializable transient
a)、反序列化:ObjectInputStream readObject
b)、序列化:ObjectOutputStream writeObject
4、打印流:PrintStream (输出流)
5、System.in /out/err setIn /setOut【改变标准输入输出的平台】
以下的流使用新增方法不能使用多态
1、ByteArrayOutputStream toByteArray()
2、BufferedReader readLine()
3、BufferedWriter newLine()
4、DataInputStream DataOutputStream
5、ObjectInputStream ObjectOutputStream
6、PrintStream