首页 理论教育 Java程序设计:字节流简介

Java程序设计:字节流简介

时间:2023-11-01 理论教育 版权反馈
【摘要】:InputStream提供了一系列读取字节数据的方法,几个常用方法说明如下:public abstract int read()throws IOException:从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。将读取的第一个字节存储在元素b[0]中,下一个存储在b[1]中,依次类推,读取的字节数最多等于b的长度。尝试读取len个字节,但读取的字节也可能小于该值,以整数形式返回实际读取的字节数。图10-10OutputStream类write方法源代码public void flush()throws IOException:刷新此输出流并强制写出所有缓冲的输出字节。

Java程序设计:字节流简介

1.字节输入流InputStream

所有的字节输入流都继承自抽象类java.io.InputStream,该类的声明为:public abstract class InputStream extends Object implements Closeable。InputStream提供了一系列读取字节数据的方法,几个常用方法说明如下:

(1)public abstract int read()throws IOException:从输入流中读取数据的下一个字节,返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值-1。InputStream的子类必须提供此方法的一个实现。

(2)public int read(byte[]b)throws IOException:从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,以整数形式返回实际读取的字节数。如果因为已经到达流末尾而没有可用的字节,则返回值-1。将读取的第一个字节存储在元素b[0]中,下一个存储在b[1]中,依次类推,读取的字节数最多等于b的长度。设k为实际读取的字节数;这些字节将存储在b[0]到b[k-1]中,不影响b[k]到b[b.length-1]。InputStream类read(b)方法等同于read(b,0,b.length)。

(3)public int read(byte[]b,int off,int len)throws IOException:将输入流中最多len个数据字节读入byte数组。尝试读取len个字节,但读取的字节也可能小于该值,以整数形式返回实际读取的字节数。如果因为已经到达流末尾而没有可用的字节,则返回值-1。将读取的第一个字节存储在元素b[off]中,下一个存储在b[off+1]中,依次类推,读取的字节数最多等于len。设k为实际读取的字节数;这些字节将存储在b[off]到b[off+k-1]中,不影响b[off+k]到b[off+len-1]。在任何情况下,b[0]到b[off-1]以及b[off+len]到b[b.length-1]都不会受到影响。InputStream类的read(b,off,len)方法会重复调用方法read(),相关源代码如图10-9所示。

图10-9 InputStream类read(byte b[],int off,int len)方法部分源代码

(4)public void close()throws IOException:关闭此输入流并释放与该流关联的所有系统资源。InputStream的close方法不执行任何操作。

2.字节输出流OutputStream

所有的字节输出流都继承自抽象类java.io.OutputStream,该类的声明为:public abstract class OutputStream extends Object implements Closeable,Flushable。OutputStream接收输出字节并将这些字节发送到某个接收器,几个常用方法说明如下:(www.xing528.com)

(1)public abstract void write(int b)throws IOException:将指定的字节写入此输出流。要写入的字节是参数b的八个低位,b的24个高位将被忽略。OutputStream的子类必须提供此方法的一个实现。

(2)public void write(byte[]b)throws IOException:将b.length个字节从指定的byte数组写入此输出流。write(b)与调用write(b,0,b.length)的效果完全相同。

(3)public void write(byte[]b,int off,int len)throws IOException:将指定byte数组中从偏移量off开始的len个字节写入此输出流。write(b,off,len)的常规协定是:将数组b中的某些字节按顺序写入输出流;元素b[off]是此操作写入的第一个字节,b[off+len-1]是此操作写入的最后一个字节。OutputStream的write方法对每个要写出的字节调用单字节的write方法,其源代码如图10-10所示。

图10-10 OutputStream类write(byte b[],int off,int len)方法源代码

(4)public void flush()throws IOException:刷新此输出流并强制写出所有缓冲的输出字节。如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。OutputStream的flush方法不执行任何操作。

(5)public void close()throws IOException:关闭此输出流并释放与此流有关的所有系统资源。关闭的流不能执行输出操作,也不能重新打开。OutputStream的close方法不执行任何操作。

InputStream和OutputStream提供了一系列读写数据有关的方法,但它们是抽象类,不能被实例化。针对不同的应用场景,JDK提供了不同的子类,本项目将讲解其中的几个流。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈