Java 字节流类
原文:https://www.studytonight.com/java-file-io/bytestream-classes-in-java
在本教程中,我们将学习 Java 中的字节流类。Java 提供了字节流类来从输入流中读取字节并将字节写入输出流。通过使用这个类,我们可以读写数据到文件中。
字节流类是
java.io
包的一部分。从下面给出的图片中,我们可以得到字节流类的工作思路。如图所示,这些类在读写文件时充当中介。
字节流类主要分为两类,即输入流和输出流。这些类是抽象的,是所有输入/输出流类的超类。
InputStream
类
这个类提供了从文件、控制台或内存中读取字节的方法。它是一个抽象类,不能实例化;但是,各种类继承了 InputStream 类并覆盖了它的方法。
下表给出了 InputStream 类的子类:
|
类别名
|
描述
|
| --- | --- |
| 缓冲输入流 | 此类提供从缓冲区读取字节的方法。 |
| ByteArrayInputStream
| 这个类提供了从字节数组中读取字节的方法。 |
| 输入流 | 这个类提供了读取 Java 基本数据类型的方法。 |
| FileInputStream
| 这个类提供了从文件中读取字节的方法。 |
| 滤流 | 此类包含从其他输入流中读取字节的方法,这些输入流用作主要数据源。 |
| 输入流 | 此类提供读取对象的方法。 |
| 管道输入流 | 此类提供从管道输入流必须连接到的管道输出流中读取的方法。 |
| 顺序输入流 | 这个类提供了连接多个输入流并从中读取数据的方法。 |
InputStream 类包括从输入流中读取数据的各种方法。这些方法被继承 InputStream 类的类覆盖。
InputStream 类子类的方法如下:
|
方法名
|
描述
| | --- | --- | | int read() | 此方法返回一个整数,它是输入的下一个可用字节的整数表示。一旦遇到输入结束,就会返回整数-1。 | | int read(字节缓冲区[]) | 此方法用于从输入中读取指定的缓冲区长度字节,并返回成功读取的字节总数。一旦遇到输入结束,它就返回-1。 | | 你读取(字节缓冲区 [],你定位,整数字节) | 此方法用于从缓冲区的指定位置“loc”开始读取“nBytes”字节。它返回从输入中成功读取的字节总数。一旦遇到输入结束,它将返回-1。 | | int 可用() | 此方法返回可读取的字节数。 | | 无效标记(整数字节) | 此方法用于标记输入流中的当前位置,直到读取指定的字节。 | | 请参阅重置() | 此方法用于将输入指针重置为先前设置的标记。 | | 长跳跃(长字节) | 此方法用于跳过输入流的字节数,并返回跳过的字节总数。 | | 无效关闭() | 此方法用于关闭输入源。如果即使在关闭后仍试图读取,则方法将引发 IOException。 |
输出流类
OutputStream 是一个抽象类,用于向流中写入 8 位字节。它是所有输出流类的超类。
注意:OutputStream 类不能实例化,也就是说我们不能创建这个类的对象。另一方面,它被后续类继承。
下表中给出的各种子类继承了这个类。
|
类别名
|
描述
|
| --- | --- |
| 输出流 | 此类提供将字节写入缓冲区的方法。 |
| 字节数组输出流 | 此类提供将字节写入字节数组的方法。 |
| 输出流 | 这个类提供了编写 java 基本数据类型的方法。 |
| 文件输出流 | 此类提供向文件写入字节的方法。 |
| FilterOutputStream | 此类提供写入其他输出流的方法。 |
| 对象输出流 | 这个类提供写对象的方法。 |
| 管道输出流 | 它提供了将字节写入管道输出流的方法。 |
| PrintStream
| 它提供了打印 Java 原始数据类型的方法。 |
OutputStream 类提供了各种将字节写入输出流的方法。下表给出了方法:
|
方法
|
描述
| | --- | --- | | 无效写入(int i) | 此方法用于将指定的单个字节写入输出流。 | | 无效写入(字节缓冲区[]) | 它用于将字节数组写入输出流。 | | 无效写入(字节缓冲区[],int loc,int nBytes) | 它用于从指定位置开始,从缓冲区向输出流写入 nByte 字节。 | | 空隙冲洗() | 它用于刷新输出流并写入挂起的缓冲字节。 | | 无效关闭() | 它用于关闭输出流。但是,如果我们试图关闭已经关闭的输出流,这个方法将引发 IOException。 |
从文件中基本写入和读取文本的示例
在下面的例子中,我们有一个字符串“欢迎今晚学习”,首先我们使用getBytes()
方法将它们转换成一个字节数组。然后使用ByteArrayInputStream
类的read()
方法,我们从数组中读取数据,并使用FileOutputStream
类的write()
方法将其存储到myfile.txt
文件中。
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class StudyTonight
{
public static void main(String[] args) throws IOException
{
byte data[] = "Welcome to Studytonight".getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
inputStream.read(data);
File newFile = new File("E:\\studytonight\\myfile.txt");
FileOutputStream outputStream = new FileOutputStream(newFile);
outputStream.write(data);
}
}
新文件myfile.txt
将在指定的路径中创建,并将出现以下输出。
欢迎今晚来学习
结论
在本教程中,我们学习了字节流类,即输入流和输出流,这些类有不同的方法用于不同的目的。字节流类用于读写文件中的数据。