输入输出流相关类

字节流-byte

基类:InputStream/OutputStream

以输入为例:
-System.in: read(), 一个一个字节从控制台读取,因为只有一个字节,所以中文字符读取不了(UTF-16是2个字节)。
- FileInputStream:read(), 一个一个字节从磁盘读取
- BufferedInputStream:read(), 虽然也是一个一个字节读取,但是是从缓存里读,减少了IO次数,效率更高,所以一般都用这个类包一层
- DataInputStream:readInt(), readDouble()等,直接写入各种数据类型,底层也是通过字节传输。要与DataOutputStream配合使用。
- ObjectInputStream: readObject(),直接写入对象,同理。

字符流-char

基类:Reader/Writer

以输入为例:
- InputStreamReader: read(),一个一个字符读取
- FileReader:read(), 一个一个字符从磁盘读取
- BufferedReader:readLine(), 直接读取一行字符,从缓存里读减少了IO次数,效率更高,所以一般都用这个类包一层
- 没有DataInputStreamReader,因为数据本身就是若干个字符了
- 没有ObjectInputStreamReader,同理

常用场景

  • 网络一般要靠字节传输,但是数据往往通过字符承载。所以要将字节流转成字符流。
1
BufferedReader(new InputStreamReader(new InputStream(...)))
  • 直接传数据:
    DataInputStream(new BufferedInputStream(new InputStream(...)))
  • 直接传对象:
    ObjectInputStream(new BufferedInputStream(new InputStream(...)))

输入输出流相关类
http://yoursite.com/2020/03/14/编程开发/Java/输入输出流相关类/
作者
Wei Lyu
发布于
2020年3月14日
许可协议