IO Summary

节点流:距离数据源最近的流

1.字节流:可以处理一切文件(文本/音频/视频等)

  1)输入流 InputStream FileInputStream ByteArrayInputStream

  • 操作:read(自己数组)
  • a)中间容器 byte[] flush = new byte[1024]
  • b)接收长度 int len = 0
  • c)循环读取 while(-1 != (len = 流.read(flush))){}
  • d)操作输出 拷贝
  2)输出流 OutputStream FileOutputStream ByteArrayOutputStream
  •      操作:write(字节数组,0,长度) 输出

2.字符流:只能处理纯文本文件

  1)输入流 Reader FileReader

  • 操作:read(字符数组)
  • a)中间容器 char[] flush = new char[1024];
  • b)接受长度 int len = 0
  • c)循环读取 while(-1 != (len=流.read(flush))){}
  • d)操作 输出 拷贝

  2) 输出流  Write FileWriter

  •  操作: write(字符数组,0,长度)输出

处理流:装饰模式 提高性能增强功能

1.转换流:解码与编码字符集问题

  • 1)输入流:InputStreamReader -->解码
  • 2)输出流:OutputStreamWriter-->编码

2.缓冲流:提高性能

  • 1)输入流:BufferedInputStream BufferReader
  • 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.BufferReader readLine()
  • 3.BufferWrite  newLine()
  • 4.DataInputStream DataOutputStream
  • 5.ObjectInputStream ObjectOutputStream
  • 6.PrintSream



 

猜你喜欢

转载自swift123.iteye.com/blog/2105839