流-文件操作(1)-Java高级知识(4)

流-文件操作(1)-Java高级知识(4)

文件操作在任何一门编程语言的基础学习过程中都是非常重要的内容,当然啦,当你学会文件操作,你的技能又会有很大的提升,你的程序将会更加具有魅力,也更加有趣。但是这有一个前提,基本的操作掌握牢固了,才可以做到很秀的地步,当然文件操作,在未来的开发之路上,是必不可少的知识体系。

为了让大家对编程有更全面的了解,在介绍文件操作之前,我们必须要了解流的概念。

1. 流

1.1 流的原理

图1. 文件与程序的数据传递

文件到程序,是一串连续不断的二进制数据包。以流的形式传递。

  1. 在 Java 程序中,对于数据的输入/输出操作以“流”(stream) 方式进行;
  2. J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。
  3. Java 的流类型一般位于 java.io 包中。

1.2 流的概念

数据源

  1. data source. 提供原始数据的原始媒介。常见的:数据库、文件、其他程序、内存、网络连接、IO 设备。
  2. 数据源就像水箱,流就像水管中流着的水流,程序就是我们最终的用户。 流是一个抽象、动态的概念,是一连串连续动态的数据集合。
图2. 流(Stream)

1.3 流的分类:

1.3.1 流的方向:

(1) 输入流:数据源到程序(InputStream、Reader 读进来)

(2) 输出流:程序到目的地(OutPutStream、Writer 写出去)

1.3.2 处理数据单元:

(1) 字节流:按照字节读取数据(InputStream、OutputStream)

(2) 字符流:按照字符读取数据(Reader、Writer)

图3. 文件拷贝原理
  • 注意: 输入输出是相对于程序而言,而不是相对于源和目标而言。

1.3.3 功能不同:

(1) 节点流:可以直接从数据源或目的地读写数据。

(2) 处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目的主要是简化操作和提高性能.

节点流和处理流的关系:

(1) 节点流处于 io 操作的第一线,所有操作必须通过他们进行。

(2) 处理流可以对其他流进行处理(提高效率或操作灵活性).

图4. 处理流与节点流的关系

1.4 Java IO 流的体系.

(1) InputStream 和 OutputStream

Java 语言中最基本的两个字节输入输出类。其他所有字节输入输出流类都继承自这两个基类。这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类.

图5. InputStream子类体系
图5. OutputStream子类体系

(2)Reader 和 Writer

Java 语言中最基本的两个字符输入输出类。其他所有字符输入输出流类都继承自这两个基类。这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类.

图6. Reader抽象类体系
图7. Writer抽象类体系

发布于 2019-06-10 19:52