欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java字节流读取文件(java编写图形界面程序)

程序员文章站 2022-03-13 14:57:17
在计算机中,无论是文本、图片、音频还是视频,所有文件都是以二进制(字节)形式存在的,i/o流中针对字节的输入/输出提供了一系列的流,统称为字节流。字节流是程序中最常用的流,根据数据的传输方向可将其分为...

在计算机中,无论是文本、图片、音频还是视频,所有文件都是以二进制(字节)形式存在的,i/o流中针对字节的输入/输出提供了一系列的流,统称为字节流。

字节流是程序中最常用的流,根据数据的传输方向可将其分为字节输入流和字节输出流。在jdk中,提供了两个抽象类inputstream和outputstream,它们是字节流的*父类,所有的字节输入流都继承自inputstream,所有的字节输出流都继承自outputstream。

为了方便理解,可以把inputstream和outputstream比作两根“水管”,如图所示。

java字节流读取文件(java编写图形界面程序)

图中,inputstream被看成一个输入管道,outputstream被看成一个输出管道,数据通过inputstream从源设备输入到程序,通过outputstream从程序输出到目标设备,从而实现数据的传输。由此可见,i/o流中的输入/输出都是相对于程序而言的。

在jdk中,inputstream和 outputstream提供了一系列与读写数据相关的方法,接下来先来了解一下inputstream的常用方法,如表所示。

inputstream的常用方法:

java字节流读取文件(java编写图形界面程序)

表中列举了inputstream的四个常用方法。前三个read()方法都是用来读数据的,其中,第一个read()方法是从输入流中逐个读入字节,而第二个和第三个read()方法则将若干字节以字节数组的形式一次性读入,从而提高读数据的效率。

在进行i/o流操作时,当前i/o流会占用一定的内存,由于系统资源宝贵,因此,在i/o操作结束后,应该调用close()方法关闭流,从而释放当前i/o流所占的系统资源。

与inputstream对应的是outputstream。outputstream是用于写数据的,因此outputstream提供了一些与写数据有关的方法。

outputstream的常用方法:

java字节流读取文件(java编写图形界面程序)

表中,列举了outputstream类的五个常用方法。前三个是重载的write()方法,都用于向输出流写入字节,其中,第一个方法逐个写入字节,后两个方法是将若干个字节以字节数组的形式一次性写入,从而提高写数据的效率。

flush()方法用来将当前输出流缓冲区(通常是字节数组)中的数据强制写入目标设备,此过程称为刷新。close()方法是用来关闭流并释放与当前io流相关的系统资源。

inputstream和outputstream这两个类虽然提供了一系列和读写数据有关的方法,但是这两个类是抽象类,不能被实例化,因此,针对不同的功能,inputstream和outputstream提供了不同的子类,这些子类形成了一个体系结构,如下图所示。

inputstream的子类:

java字节流读取文件(java编写图形界面程序)

outputstream的子类:

java字节流读取文件(java编写图形界面程序)

从图中可以看出,inputstream和outputstream的子类有很多是大致对应的,比如,bytearrayinputstream和bytearrayoutputstream、fileinputstream和fileoutputstream等。