Java 字节流类

原文:https://www.studytonight.com/java-file-io/bytestream-classes-in-java

在本教程中,我们将学习 Java 中的字节流类。Java 提供了字节流类来从输入流中读取字节并将字节写入输出流。通过使用这个类,我们可以读写数据到文件中。

enlightened字节流类是java.io包的一部分。

从下面给出的图片中,我们可以得到字节流类的工作思路。如图所示,这些类在读写文件时充当中介。

Byte Stream Classes in Java : studytonight

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

InputStream

这个类提供了从文件、控制台或内存中读取字节的方法。它是一个抽象类,不能实例化;但是,各种类继承了 InputStream 类并覆盖了它的方法。

下表给出了 InputStream 类的子类:

|

类别名

|

描述

| | --- | --- | | 缓冲输入流 | 此类提供从缓冲区读取字节的方法。 | | ByteArrayInputStream | 这个类提供了从字节数组中读取字节的方法。 | | 输入流 | 这个类提供了读取 Java 基本数据类型的方法。 | | FileInputStream | 这个类提供了从文件中读取字节的方法。 | | 滤流 | 此类包含从其他输入流中读取字节的方法,这些输入流用作主要数据源。 | | 输入流 | 此类提供读取对象的方法。 | | 管道输入流 | 此类提供从管道输入流必须连接到的管道输出流中读取的方法。 | | 顺序输入流 | 这个类提供了连接多个输入流并从中读取数据的方法。 |

InputStream 类包括从输入流中读取数据的各种方法。这些方法被继承 InputStream 类的类覆盖。

InputStream 类子类的方法如下:

|

方法名

|

描述

| | --- | --- | | int read() | 此方法返回一个整数,它是输入的下一个可用字节的整数表示。一旦遇到输入结束,就会返回整数-1。 | | int read(字节缓冲区[]) | 此方法用于从输入中读取指定的缓冲区长度字节,并返回成功读取的字节总数。一旦遇到输入结束,它就返回-1。 | | 你读取(字节缓冲区 [],你定位,整数字节) | 此方法用于从缓冲区的指定位置“loc”开始读取“nBytes”字节。它返回从输入中成功读取的字节总数。一旦遇到输入结束,它将返回-1。 | | int 可用() | 此方法返回可读取的字节数。 | | 无效标记(整数字节) | 此方法用于标记输入流中的当前位置,直到读取指定的字节。 | | 请参阅重置() | 此方法用于将输入指针重置为先前设置的标记。 | | 长跳跃(长字节) | 此方法用于跳过输入流的字节数,并返回跳过的字节总数。 | | 无效关闭() | 此方法用于关闭输入源。如果即使在关闭后仍试图读取,则方法将引发 IOException。 |

输出流类

OutputStream 是一个抽象类,用于向流中写入 8 位字节。它是所有输出流类的超类。

enlightened注意: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将在指定的路径中创建,并将出现以下输出。

欢迎今晚来学习

结论

在本教程中,我们学习了字节流类,即输入流和输出流,这些类有不同的方法用于不同的目的。字节流类用于读写文件中的数据。