ByteStream Classes in Java

2025 年 3 月 28 日 | 阅读 4 分钟

字节流类用于从输入流读取字节并将字节写入输出流。换句话说,我们可以说字节流类读取/写入8位数据。我们可以使用字节流类来存储视频、音频、字符等。这些类是 java.io 包的一部分。

字节流类分为两类,即 InputStream 和 OutputStream。这些类是抽象类,是所有输入/输出流类的超类。

InputStream 类

InputStream 类提供了从文件、控制台或内存读取字节的方法。它是一个抽象类,不能被实例化;但是,各种类继承了 InputStream 类并重写了它的方法。InputStream 类的子类如下表所示。

序号Class描述
1BufferedInputStream此类提供了从缓冲区读取字节的方法。
2ByteArrayInputStream此类提供了从字节数组读取字节的方法。
3DataInputStream此类提供了读取 Java 原始数据类型的方法。
4FileInputStream此类提供了从文件读取字节的方法。
5FilterInputStream此类包含从其他用作主要数据源的输入流读取字节的方法。
6ObjectInputStream此类提供了读取对象的方法。
7PipedInputStream此类提供了从管道输出流读取的方法,管道输入流必须连接到该管道输出流。
8SequenceInputStream此类提供了连接多个输入流并从中读取数据的方法。

InputStream 类包含各种读取输入流中的数据的方法。这些方法被继承 InputStream 类的类重写。然而,这些方法如下表所示。

序号方法描述
1int read()此方法返回一个整数,即输入流中下一个可用字节的整数表示。一旦遇到输入结束,将返回整数 -1。
2int read (byte buffer [])此方法用于读取指定缓冲区长度的字节,并返回成功读取的总字节数。一旦遇到输入结束,将返回 -1。
3int read (byte buffer [], int loc, int nBytes)此方法用于从缓冲区中读取“nBytes”个字节,从指定位置“loc”开始。它返回从输入中成功读取的总字节数。一旦遇到输入结束,将返回 -1。
4int available ()此方法返回可供读取的字节数。
5Void mark(int nBytes)此方法用于在输入流中标记当前位置,直到读取指定的 nBytes。
6void reset ()此方法用于将输入指针重置到先前设置的标记。
7long skip (long nBytes)此方法用于跳过输入流的 nBytes,并返回被跳过的总字节数。
8void close ()此方法用于关闭输入源。如果在关闭后尝试读取,则该方法会抛出 IOException。

OutputStream 类

OutputStream 是一个抽象类,用于将 8 位字节写入流。它是所有输出流类的超类。此类不能被实例化;但是,它被下表中所示的各种子类继承。

序号Class描述
1BufferedOutputStream此类提供了将字节写入缓冲区的的方法。
2ByteArrayOutputStream此类提供了将字节写入字节数组的方法。
3DataOutputStream此类提供了写入 Java 原始数据类型的方法。
4FileOutputStream此类提供了将字节写入文件的方法。
5FilterOutputStream此类提供了写入其他输出流的方法。
6ObjectOutputStream此类提供了写入对象的方法。
7PipedOutputStream它提供了将字节写入管道输出流的方法。
8PrintStream它提供了打印 Java 原始数据类型的方法。

OutputStream 类提供了各种将字节写入输出流的方法。这些方法如下表所示。

序号方法描述
1void write (int i)此方法用于将指定的单个字节写入输出流。
2void write (byte buffer [] )它用于将字节数组写入输出流。
3Void write(bytes buffer[],int loc, int nBytes)它用于从缓冲区中从指定位置开始将 nByte 个字节写入输出流。
4void flush ()它用于刷新输出流并写入待处理的缓冲字节。
5void close ()它用于关闭输出流。但是,如果我们尝试关闭已关闭的输出流,则此方法将抛出 IOException。

示例

以下示例使用 ByteArrayInputStream 从字节数组“content”创建输入流。我们使用 read() 方法从输入流读取内容。我们还对 FileOutputStream 对象使用了 write() 方法,将字节数组内容写入文件。

请看以下示例。

输出

A new file MyNewFile.doc will be created on desktop with the content "Jtp is the best website to learn new technologies".