【java基础】输入/输出流基本介绍

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【java基础】输入/输出流基本介绍,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

基本说明

在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流。这些字节序列的来源地和目的地可以是文件,而且通常都是文件,但是也可以是网络连接,甚至是内存块。抽象类InputStream和OutputStream构成了输入/输出(I/O)类层次结构的基础。而Reader和Writer又可以很轻松的基于Unicode文本进行操作。


InputStream和OutputStream

在学习输入输出流之前,我们有必要来看一下InputStream和OutputStream的类图

InputStream内容如下

在这里插入图片描述
在这里插入图片描述

OutputStream内容如下

在这里插入图片描述
在这里插入图片描述


InputStream和OutputStream方法的一些说明

在InputStream里面最重要的就是read方法,该方法可以读入字节。而在OutputStream里面最重要的就是write方法,该方法可以写出字节。

在这里插入图片描述
在这里插入图片描述

我们知道InputStream和OutputStream都实现了AutoClosed接口,所以我们在使用这2个类的时候可以使用try-with-Resource让其自动关闭。如果不使用try-with-Resource,那么我们在使用完输入/输出流之后也应该调用其close方法来释放资源。

对于关闭输出流,我们还需要注意一些内容:关闭一个输出流的同时还会冲刷用于该输出流的缓冲区:所有被临时置于缓冲区中,以便用更大的包的形式传递的字节在关闭输出流时都将被送出。特别是,如果不关闭文件,那么写出字节的最后一个包可能永远也得不到传递。当然,我们还可以用flush方法来人为地冲刷这些输出。

在这里插入图片描述

需要注意的一点是read和write方法在执行时都会被阻塞,直至字节确实被读入或者写出。我们可以使用available方法来判断是否还可以进行读取。该方法会返回在不阻塞的情况下可获取的字节数

在这里插入图片描述


java中的输入/输出流家族

在java中拥有应该流家族,包含各种输入/输出流类型,数量超过60个,具体内容如下

在这里插入图片描述
在这里插入图片描述

让我们把输入/输出流家族中的成员按照它们的使用方法来进行划分,这样就形成了处理字节和字符的两个单独的层次结构。正如所见,InputStream和OutputStream类可以读写单个字节或字节数组,这些类构成了第一张图所示的层次结构的基础。要想读写字符串和数字,就需要功能更强大的子类,例如,DataInputStream和DataOutputStream可以以二进制格式读写所有的基本Java类型。最后,还包含了多个很有用的输入/输出流,例如,ZipInputStream和ZipOutputStream可以以我们常见的ZIP压缩格式读写文件。

另一方面,对于Unicode文本,可以使用抽象类Reader和Writer的子类(第二张图)。Reader和Writer类的基本方法与InputStream和OutputStream中的方法类似。

  • read方法将返回一个Unicode码元(一个在0~65535之间的整数),或者在碰到文件结尾时返回-1。
  • write方法在被调用时,需要传递一个Unicode码元

Reader和Writer

二者的类图如下

Reader内容

在这里插入图片描述
在这里插入图片描述

Writer内容

在这里插入图片描述
在这里插入图片描述

Reader和Writer类的基本方法与InputStream和OutputStream中的方法类似,就不细说了,大家可以参考源代码上面的注释


总结

InputStream和OutputStream算是所有二进制输入/输出的父类,而Reader和Write算是所有字符输入/输出的父类。它们的子类提供了各种形式的输入/输出方法,我们使用它们可以很轻松的完成输入/输出操作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140179.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!