JavaSE IO总结

clipboard.png

字节流:

以字节为单位,8位,可访问全部类型文件,在写入时其实是将byte中的二进制数据写入文件(即便为byte赋值65,也是将65转成一串二进制数据,而后写入,由于全部流都是读写二进制数据)数组

字符流:

以字符为单位,16位Unicode,只可访问文本文件.网络

(因为直接使用字节流时,输出流会要求将数据转成二进制数据(即byte类型),在读取时又只能读取到byte类型,若是要还原到原始类型则须要手动转换,同时可能产生读取的byte不足以转换为一个字符(一些字符须要多个字节),此时会产生乱码.因此对于字符类型,将相应操做封装起来,创建字符流的输入/输出)多线程

(字符流避免了"读一半"的状况,读/写编码表不统一的状况仍需其余操做进行处理)性能


字节流

FileInputStream和FileOutputStream编码

获取文件的输入流或输出流,实现对任意文件的读写spa

特色:线程

  1. 使用时只须要对应文件的File或者路径.
  2. 一般做为其余OutputStream和InputStream的参数.

FilterInputStream和FilterOutputStreamcode

过滤器输入流和过滤器输出流,为基础的输入流和输出流增长其余功能.有多种不一样功能的子类对象


DataIntputStreamblog

数据输入流容许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型

DataOutputStream

数据输出流容许应用程序以适当方式将基本Java数据类型写入输出流中。

特色:

  1. 读取时读取指定位长的二进制数据,而后转换为对应基本类型
  2. 写入时先将数据转换为指定位长的二进制数据,而后再写入
  3. 使用时须要与其余OutputStream和InputStream组合使用.

(由于其余字节流只能读写字节和字节数组,例如其余输出流写入65时,文件中显示的是A)


BufferedInputStream和BufferedOutputStream

特色:

  1. 在内存中设置必定大小的数组做为缓冲区,在读/写时先填充缓冲区,避免屡次读/写时频繁与硬盘交互.
  2. 使用时须要与其余OutputStream和InputStream组合使用.

PushbackInputStream

特色:

  1. 为另外一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。
  2. 在读取终止字节后,代码片断能够“取消读取”该字节,这样,输入流上的下一个读取操做将会从新读取被推回的字节。
  3. 使用时须要与其余InputStream组合使用.

PrintStream

特色:

  1. PrintStream配合其余输出流可以方便地打印各类数据值表示形式,便可以调整数据的排版.
  2. 使用时可使用对应文件的File或者路径.
  3. 也能够与其余OutputStream和InputStream组合使用.

ObjectInputStream和ObjectOutputStream

特色:

  1. 能够读/写已经序列化的类的对象.(同时也能够读写基本数据类型)
  2. 经过在流中使用文件能够实现对象的持久存储。若是流是网络套接字流,则能够在另外一台主机上或另外一个进程中重构对象。
  3. 使用时须要与其余OutputStream和InputStream组合使用.

PipedOutputStream和PipedInputStream
管道输出流和管道输入流。

特色:

  1. 多线程能够经过管道进行线程间的通信。在使用管道通讯时,必须将PipedOutputStream和PipedInputStream配套使用
  2. 使用管道通讯时,大体的流程是:在线程A中向PipedOutputStream中写入数据,这些数据会自动的发送到与PipedOutputStream对应的PipedInputStream中,进而存储在PipedInputStream的缓冲中;此时,线程B经过读取PipedInputStream中的数据。就能够实现,线程A和线程B的通讯。

ByteArrayInputStream和ByteArrayOutputStream

内存输入流和内存输出流

在内存中设置必定长度的数组做为缓冲区

特色:

  1. ByteArrayOutputStream在向缓冲区写入数据时,当缓冲区已满载则缓冲区自动增长长度.
  2. 主要是为了临时处理数据使用.
  3. 没法与其余输入流和输出流配合使用.

SequenceInputStream

特色:

多个输入流合并为一个输入流,在读入时,当前输入流读入完毕自动转入下一个输入流进行读取


字符流

BufferedReader和BufferedWriter

组合其余Reader和Writer使用

能够读取一行


InputStreamReader和OutputStreamWriter

转换流,将字节流装饰为字符流

InputStreamReader 是字节流通向字符流的桥梁

OutputStreamWriter 是字符流通向字节流的桥梁

在构造时须要InputStream和OutputStream


FileReader和FileWriter


StringReader和StringWriter

相似ByteArrayInputStream和ByteArrayOutputStream,可是缓冲区是一个String


PipedReader和PipedWriter
管道字节输入输出流


CharArrayReader和CharArrayReader

相似ByteArrayInputStream和ByteArrayOutputStream,可是缓冲区是一个char[]


PushbackReader

增长推回,组合其余Reader使用

相关文章
相关标签/搜索