java io 字节流_Java字节流概念

在计算机中,无论是文本、图片、音频还是视频,所有的文件都是以二进制(字节)形式存在,IO流中针对字节的输入输出提供了一系列的流,统称为字节流。字节流是程序中最常用的流,根据数据的传输方向可将其分为字节输入流和字节输出流。在JDK 中,提供了两个抽象类InputStream 和OutputStream,它们是字节流的顶级父类,所有的字节输入流都继承自InputStream,所有的字节输出流都继承自OutputStream。为了方便理解,可以把InputStream和OutputStream 比作两根“水管”,如图所示。

b919368d41842c914a8d3a5a1f41e4aa.png

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

在JDK中,InputStream 和OutputStream 提供了一系列与读写数据相关的方法,接下来先来了解一下InputStream 的常用方法,如表所示。方法声明功能描述

int read()从输人流读取一个8位的字节,把它转换为0~255之间的整数. 并返回这一整数

int read(bytc[] b)从输入流读取若干字节。把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数

int read(bytc[] b,int off,int len)从输人流读取若干字节。把它们保存到参数b指定的字数组中,Off指定字节数组开始保存数裾的起始下标,len表示读取的字爷 数目

void close()关闭此输人流并释放与该流关联的所有系统资源

表中列举了InputStream 的四个常用方法。前三个read()方法都是用来读数据的,其中,第一个read()方法是从输入流中逐个读入字节,而第二个和第三个read()方法则将若干字节以字节数组的形式一次性读入,从而提高读数据的效率。在进行IO 流操作时,当前IO流会占用一定的内存,由于系统资源宝贵,因此,在IO 操作结束后,应该调用close()方法关闭流,从而释放当前IO流所占的系统资源。

与InputStream 对应的是OutputStream。OutputStream 是用于写数据的,因此OutputStream 提供了一些与写数据有关的方法,如表所示。方法名称方法描述

void write(int b)向输出流写人一个字节

void write(byte[] b)把参数b指定的字节数组的所有字节写到输出流

void write(byte[] b,int off,int   len)将指定byte数组中从偏移量off开始的km个字节写人输出流

void flush()刷新此输出流并强制写出所有缓冲的输出字节

void close()关闭此输出流并释放与此流相关的所有系统资源

表中,列举了OutputStream 类的五个常用方法。前三个是重载的write()方法,都是用于向输出流写入字节,其中,第一个方法逐个写入字节,后两个方法是将若干个字节以字节数组的形式一次性写入,从而提高写数据的效率。flush()方法用来将当前输出流缓冲区(通常是字节数组)中的数据强制写入目标设备,此过程称为刷新。close()方法是用来关闭流并释放与当前IO流相关的系统资源。

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

2a5221bb55192305a927849b55016840.png

从图中可以看出,InputStream 和OutputStream 的子类有很多是大致对应的,比如ByteArrayInputStream 和ByteArrayOutputStream,FileInputStream 和FileOutputStream 等。图中所列出的IO 流都是程序中很常见的,接下来将逐步为大家讲解这些流的具体用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值