首页 课程 师资 教程 报名

技术分析,Java开发接口之IO接口

  • 2020-05-18 15:32:55
  • 2290次 动力节点

1.java.io的描述

通过数据流、序列化和文件系统提供系统输入和输出。

2.流编辑

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

技术分析,Java开发接口之IO接口

3.Java流输入输出原理编辑

Java把这些不同来源和目标的数据都统一抽象为数据流。Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。

Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。

4.Java流的分类

按流向分:

  • 输入流:程序可以从中读取数据的流。
  • 输出流:程序能向其中写入数据的流。

按数据传输单位分:

  • 字节流:以字节为单位传输数据的流
  • 字符流:以字符为单位传输数据的流

按功能分:

  • 节点流:用于直接操作目标设备的流
  • 过滤流:是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。

java.io常用类

  • JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。
  • InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。
  • OutputStream:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
  • Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
  • Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

5.IO的基本分类

Java的I/O操作类在包java.io下,大概有将近80个类,但是这些类大概可以分成四组,分别是:

  • 基于字节操作的I/O接口:InputStream和OutputStream
  • 基于字符操作的I/O接口:Writer和Reader
  • 基于磁盘操作的I/O接口:File
  • 基于网络操作的I/O接口:Socket编程

6.磁盘I/O工作机制

前面介绍了基本的JavaI/O的操作接口,这些接口主要定义了如何操作数据,以及介绍了操作两种数据结构:字节和字符的方式。还有一个关键问题就是数据写到何处,其中一个主要方式就是将数据持久化到物理磁盘,下面将介绍如何将数据持久化到物理磁盘的过程。

我们知道数据在磁盘的唯一最小描述就是文件,也就是说上层应用程序只能通过文件来操作磁盘上的数据,文件也是操作系统和磁盘驱动器交互的一个最小单元。值得注意的是Java中通常的File并不代表一个真实存在的文件对象,当你通过指定一个路径描述符时,它就会返回一个代表这个路径相关联的一个虚拟对象,这个可能是一个真实存在的文件或者是一个包含多个文件的目录。为何要这样设计?因为大部分情况下,我们并不关心这个文件是否真的存在,而是关心这个文件到底如何操作。例如我们手机里通常存了几百个朋友的电话号码,但是我们通常关心的是我有没有这个朋友的电话号码,或者这个电话号码是什么,但是这个电话号码到底能不能打通,我们并不是时时刻刻都去检查,而只有在真正要给他打电话时才会看这个电话能不能用。也就是使用这个电话记录要比打这个电话的次数多很多。

何时真正会要检查一个文件存不存?就是在真正要读取这个文件时,例如FileInputStream类都是操作一个文件的接口,注意到在创建一个FileInputStream对象时,会创建一个FileDescriptor对象,其实这个对象就是真正代表一个存在的文件对象的描述,当我们在操作一个文件对象时可以通过getFD()方法获取真正操作的与底层操作系统关联的文件描述。例如可以调用FileDescriptor.sync()方法将操作系统缓存中的数据强制刷新到物理磁盘中。

技术分析,Java开发接口之IO接口

以上就是动力节点java培训机构的小编针对“技术分析,Java开发接口之IO接口”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交