在计算机中 , 无论是文本、图片、音频还是视频 , 所有文件都是以二进制(字节)形式存在的 , I/O流中针对字节的输入/输出提供了一系列的流 , 统称为字节流 。
字节流是程序中最常用的流 , 根据数据的传输方向可将其分为字节输入流和字节输出流 。在JDK中 , 提供了两个抽象类InputStream和OutputStream , 它们是字节流的顶级父类 , 所有的字节输入流都继承自InputStream , 所有的字节输出流都继承自OutputStream 。
为了方便理解 , 可以把InputStream和OutputStream比作两根“水管” , 如图所示 。
图中 , InputStream被看成一个输入管道 , OutputStream被看成一个输出管道 , 数据通过InputStream从源设备输入到程序 , 通过OutputStream从程序输出到目标设备 , 从而实现数据的传输 。由此可见 , I/O流中的输入/输出都是相对于程序而言的 。
在JDK中 , InputStream和 OutputStream提供了一系列与读写数据相关的方法 , 接下来先来了解一下InputStream的常用方法 , 如表所示 。
InputStream的常用方法:
表中列举了InputStream的四个常用方法 。前三个read()方法都是用来读数据的 , 其中 , 第一个read()方法是从输入流中逐个读入字节 , 而第二个和第三个read()方法则将若干字节以字节数组的形式一次性读入 , 从而提高读数据的效率 。
在进行I/O流操作时 , 当前I/O流会占用一定的内存 , 由于系统资源宝贵 , 因此 , 在I/O操作结束后 , 应该调用close()方法关闭流 , 从而释放当前I/O流所占的系统资源 。
与InputStream对应的是OutputStream 。OutputStream是用于写数据的 , 因此OutputStream提供了一些与写数据有关的方法 。
OutputStream的常用方法:
表中 , 列举了OutputStream类的五个常用方法 。前三个是重载的write()方法 , 都用于向输出流写入字节 , 其中 , 第一个方法逐个写入字节 , 后两个方法是将若干个字节以字节数组的形式一次性写入 , 从而提高写数据的效率 。
flush()方法用来将当前输出流缓冲区(通常是字节数组)中的数据强制写入目标设备 , 此过程称为刷新 。close()方法是用来关闭流并释放与当前IO流相关的系统资源 。
InputStream和OutputStream这两个类虽然提供了一系列和读写数据有关的方法 , 但是这两个类是抽象类 , 不能被实例化 , 因此 , 针对不同的功能 , InputStream和OutputStream提供了不同的子类 , 这些子类形成了一个体系结构 , 如下图所示 。
InputStream的子类:
OutputStream的子类:
【java编写图形界面程序 java字节流读取文件】从图中可以看出 , InputStream和OutputStream的子类有很多是大致对应的 , 比如 , ByteArrayInputStream和ByteArrayOutputStream、FileInputStream和FileOutputStream等 。
推荐阅读
- 中高级java开发面试题 java高级面试题库
- javaScript 的程序设计
- Python中常见的可视化图形有哪些?详解3种常见的Python视图
- Editplus如何运行python程序?Editplus怎么编写python代码并运行
- ppt图形路径没有闭合怎么处理?ppt如何闭合图形的路径?
- 关于图形的知识有哪些 关于图形的知识介绍
- java入门基础知识 java代码例子讲解
- java新手代码大全 java经典程序代码
- 史记是编写的哪个时期 司马迁史记是哪个朝代
- 立体图形怎么画 立方体怎么画