跟我学IO(Java IO原理)

从本质上讲,计算机程序运行的过程就是按照约定的逻辑对数据进行处理的过程。这通常包含数据的获取、运算、存储和输出等内容。其中的逻辑体现在代码中,获取数据的方式则有多种,包括:程序中直接给出、用户通过键盘输入、从数据库中读取,通过网络读取等等。

从本质上讲,计算机程序运行的过程就是按照约定的逻辑对数据进行处理的过程。这通常包含数据的获取、运算、存储和输出等内容。其中的逻辑体现在代码中,获取数据的方式则有多种,包括:程序中直接给出、用户通过键盘输入、从数据库中读取,通过网络读取等等。

什么是数据源?

数据源指那些能够提供数据的地方,包括键盘、磁盘文件、网络接口等。

什么是数据宿?

数据宿是指能够接收数据的地方,可以是磁盘文件、网络插口以及显示器、打印机等外部设备,数据宿也可以认为是数据传输的目的地。

考虑到数据源的多样性,为更有效地进行数据的输入/输出操作,Java中把不同的数据源与程序间的数据传输都抽象表述为“流”(Stream),以实现相对统一而简单的输入/输出操作方式,这是因为传输中的数据就像水流一样,也称为数据流。可以想象,生活中的自来水,从容器(数据源,如:湖、河等)到管道、管道到容器(如:水池、盆子等)、从管道到管道,等等。虽然容器的种类和性质有很多,但是一旦输水管接通,我们就可以从管道中取水或向管道中注水,而不必在关心其来源和去向。程序中的数据传速也非常类似,于是java.io中定义了多种类型来实现数据的输入/输出功能,也称之为I/O类型,使用这些类型可以在程序和数据源之间建立数据传输通道,即I/O流,然后就用基本统一的方式进行读写数据。

I/O数据流的分类方式:

1、按照数据流动的方向

按照数据流动的方向,可以分为输入流(Input Stream)和输出流(Output Stream)。输入流只能从中读取数据,而不能向其写入数据;而输出流则只能向其写入数据,而不能从中读取数据。这里是站在程序的角度来确定出入方向的,即将数据从程序外部传到程序中称之为“输入”数据,如从键盘读取数据到程序中也称为键盘数据、读取文件中的数据到程序中称文件输入,反之,将程序中的数据传送到外部称之“输出”数据。

2、根据数据流所关联的是数据源还是数据流

根据数据流所关联的是数据源还是其他数据流,可分为节点流(Node Stream)和处理流(Processing Stream)。节点流可以从/向特定的地方(节点)读/写数据,这里所谓的“地方”就是数据源,如键盘或磁盘文件等。或者说,节点流就是直接连接到数据源的I/O流,如:FileReader、FileWriter等。处理流是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现增强的数据读/写功能,处理流并不直接连到数据源。如:BufferedReader字符流是对FileReader节点字符流的增强,提供了如每次读取一行的功能等。

3、按照“颗粒大小”划分

按照“颗粒大小”分为字符流(Character Stream)和字节流(Byte Stream)进行数据传输。字节流以字节为单位进行数据传输,每次传送一个或多个字节;而字符流以字符为单位进行数据传输,每次传输一个或多个字符。java采用InputStream和OutputStream表示输入和输出字节流,Reader和Writer表示输入和输出字符流。

阅读一切好书如同和过去最杰出的人谈话。——笛卡儿
0 不喜欢
说说我的看法 -
全部评论(
没有评论
目录
热门标签
热门文章
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号