20201013_陈宇_

日志

学习总结:

流:

​ 在 Java 语言中,将够 读取数据 或者 写出数据 的对象抽象为 流

​ 以内存为基准,分为 输入 input 和 输出 output ,即流向内存是输入流,流出内存的输出流

​ Java中 I/O 操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出 也叫做作写出数据

​ 在 Java 传统的 IO 体系中,所有的 流 对应的类型都扩展自四个抽象类:

image-20201013232938826

​ 其中的 InputStream 和 OutputStream 的子类表示字节流, Reader 和 Writer 的子类则表示字符流

​ 这里所提及的 Stream 一词均表示流,不能和 java.util.stream.Stream 接口混为一谈

分类:

​ 按流向分类:

​ 输入流:用于实现从外部读取数据到当前程序的流

​ 输出流:用于实现从当前程序中向外部输出数据的流

​ 按处理的数据单元分类:

​ 字节流:如果某个流在读取或写入数据时以字节为单位

​ 字符流:如果某个流在读取或写入数据时以字符为单位

​ 按照流的功能分类:

​ 节点流:直接数据节点中读取数据或向数据节点中写入数据的流

​ 包装流:节点流都比较原始,仅用于实现数据的读取和写入,通常不具备其它功能

​ 节点流和包装流的关系:

image-20201013233527427

Closeable:

​ java.io.Closeable 接口,实现此接口的都是可以关闭的数据的源或目的地。都会实现 close() 方 法。如: Scanner , InputStream , OutputStream

​ 该类继承了 java.lang.AutoCloseable , AutoCloseable 接口提供了自动关闭的能力

字节输入流:

​ InputStream 类是所有表示字节输入流的类的父类,它是个抽象类,因此不能被实例化

image-20201013233658843

​ 因为 InputStream 类是个抽象类,因此必须借助于其 非抽子类 来完成实例化

FileInputStream:

​ FileInputStream 用于从文件系统中的某个文件中读取内容(以字节为单位)

​ FileInputStream 用于读取诸如图像数据之类的原始字节流

BufferedInputStream:

​ BufferedInputStream 类的实例表示带有缓冲功能的字节输入流,它是一种包装流

​ BufferedInputStream 类的实例并不能直接读取数据节点中的数据,而是需要从另外一个流中读取数据

​ 首先要从相应的 InputStream 中读取字节 数据到缓冲区中,随后再从缓冲区中读取数据

​ BufferedInputStream 类相当于提供了缓存其它字节输入流所读取到的数据的功能

字节输出流:

image-20201013234137041

​ 类似用于输入流

学习心得:

​ 今天学习的对于流的知识可以说已经完全搞混了,代码写出来都全是问题,真是难受,可能跟上课打瞌睡没听到很有关系,而且东西也很多,今天的知识点太多了,需要理解和记忆很多东西,知识点总结却不多,但是下来一定会去再弄一下这一块的知识,毕竟感觉还是挺重要的。

标签

评论