Java IO概述

时间:2020-01-09 14:19:59  来源:igfitidea点击:

在本文中,我将尝试为我们提供Java IO(java.io)包中的类的概述。更具体地说,我将按照其目的对这些类进行分组。这种分组将使我们日后更容易确定班级的目的,或者找到特定目的所需的班级。

输入和输出-源和目标

术语"输入"和"输出"有时可能会有些混乱。应用程序一部分的输入通常是另一部分的输出。 OutputStream是写入输出或者输出来自(供我们读取)的流吗?毕竟," InputStream"将其数据输出到读取程序,不是吗?就个人而言,在我刚开始学习Java IO的那一天,我发现这有点令人困惑。

为了消除这种可能的混乱,我尝试在输入和输出上放置一些不同的名称,以尝试将它们在概念上链接到输入的来源和输出的位置。

Java的IO包主要涉及从源读取原始数据并将原始数据写入目标。最典型的数据源和目标是:

  • 档案文件
  • 管子
  • 网络连接
  • 内存中的缓冲区(例如数组)
  • System.in,System.out,System.error

下图说明了程序从源读取数据并将其写入某个目标的原理:

源程序目标IO流是Java IO中的核心概念。流是概念上无限的数据流。我们可以从流中读取或者写入流。流连接到数据源或者数据目标。 Java IO中的流可以基于字节(读取和写入字节),也可以基于字符(读取和写入字符)。

需要从某些源读取数据的程序需要使用InputStream或者Reader。需要将数据写入某个目标的程序需要使用OutputStream或者Writer。下图也说明了这一点:

InputStream,OutputStream,读取器和写入器

源InputStream /阅读器程序程序OutputStream / Writer目标" InputStream"或者" Reader"链接到数据源。 OutputStream或者Writer链接到数据的目的地。

Java IO包含InputStream,OutputStream,Reader和Writer类的许多子类。原因是,所有这些子类都在解决各种不同的目的。这就是为什么有这么多不同的类别的原因。解决的目的总结如下:

Java IO的目的和函数

在阅读Java IO类时,很高兴知道这些目的。它们使理解类的目标变得更加容易。

  • 文件存取
  • 网络访问
  • 内部存储器缓冲区访问
  • 线程间通信(管道)
  • 正在缓冲
  • 筛选
  • 解析中
  • 读和写文本(读者/作家)
  • 读写原始数据(long,int等)
  • 读写对象

在讨论了源,目的地,输入,输出以及Java IO类所针对的各种IO目的之后,下面的表格列出了大多数(如果不是全部)Java IO类,除以输入,输出,基于字节或者基于字符以及任何其他它们可能要解决的更具体的目的,例如缓冲,解析等。