InputStream
1、FileInputStream(处理文件IO流-节点流)
1. 用于读取原始的字节流数据,三个构造函数(1-通过File对象;2-文件路径;3-文件
描述符)
2、BufferedInputStream(缓存流或者过滤流)
1. 创建对象的时候也将创建一个内部缓存区数组
2. 当读取字节的时候,缓存数组会根据需要重新填充,一次有多个字节;
3. mark操作会记住输入流中的一点,并且reset操作会导致从最近的mark操作之后读取的所有字节在从包含的输入
流中取出新的字节之前重新读取。
4、与FileInputStream相比:减少了读取磁盘IO的操作
1、使用BufferedInputStream读取资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会
读取尽可能多的字节,执行read时先从缓冲区读取,当缓冲区数据读完时再把缓冲区填满。),因此,当每次读
取的数据量很小时,FileInputStream每次都是从硬盘读入,而BufferedInputStream大部分是从缓冲区读入。读
取内存速度比读取硬盘速度快得多,因此BufferedInputStream效率高,且FileInputStream对象的read方法会出
现阻塞;BufferedInputStream的默认缓冲区大小是 8192 字节。当每次读取数据量接近或远超这个值时,两
者效率就没有明显差别了。BufferedOutputStream和FileOutputStream同理,差异更明显一些。
3、ObjectInputStream(对象输入流)
1. 实现反序列化的关键类,ObjectInputStream反序列化流,将之前使用 ObjectOutputStream 序列化的原始数据恢
复为对象,以流的方式读取对象。其它的用途包括主机之间使用socket流传递对象、远程系统调用。
4、DataInputStream(处理JAVA标准数据流-过滤流)
1. 用处:
DataInputStream 是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java
数据类型”。应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数
据。
DataInputStream
5、ByteArrayInputStream(字节数组流或者节点流)
1. ByteArrayInputStream与ByteArrayOutputStream类用于以IO流的方式来完成对字节数组的内容的读写,来支持
类似内存虚拟文件或者内存映像文件的功能。
ByteArrayInputStream
6、PipeInputStream(管道流)
1. 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流
PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的主要流程是在一个线程中
向PipedOutputStream写入数据,这些数据会自动传送到对应的管道输入流PipedInputStream中,其他线程通过读
取PipeInputStream中缓冲的数据实现多线程间通信。
7、PrintStream(打印流)
OutputStream
1、FileOutputStream
2、BufferedOutputStream
3、ObjectOutputStream
4、DataOutputStream
5、ByteArrayOutputStream
6、PipeOuputStream