如何用 Java 从文件中读取字节

Java 是由 Sun Microsystems 开发的一种高级编程语言,具有简单易学、跨平台、面向对象等优点。在 Java 编程中使用文件 I/O 是一项基本技能。本文将详细介绍如何使用 Java 从文件中读取字节。

用 FileInputStream 类读取文件

Java 中的 FileInputStream 类能够从文件中读取字节。如下示例演示如何使用 FileInputStream 读取文件的内容并将其存储在字节数组中。

注意事项:在使用 FileInputStream.read() 方法时,应该总是将返回值存储在一个 int 变量中,并检查是否等于 -1。这是因为如果已经达到文件的末尾,则方法会返回 -1。

示例代码:

import java.io.FileInputStream;
import java.io.IOException;

public class ReadBytesFromFile {

    public static void main(String[] args) {

        String filePath = "example.txt";
        byte[] buffer = new byte[1024];

        try (FileInputStream inputStream = new FileInputStream(filePath)) {

            int bytesRead = inputStream.read(buffer);

            while (bytesRead != -1) {
                // 处理读取的字节
                // ...
                bytesRead = inputStream.read(buffer);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

用 BufferedInputStream 类读取文件

BufferedInputStream 类能够对 FileInputStream 进行包装,并提供了一些额外的功能。使用 BufferedInputStream 可以提高读取文件的性能。

示例代码:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class BufferedReadBytesFromFile {

    public static void main(String[] args) {

        String filePath = "example.txt";
        byte[] buffer = new byte[1024];

        try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(filePath))) {

            int bytesRead = inputStream.read(buffer);

            while (bytesRead != -1) {
                // 处理读取的字节
                // ...
                bytesRead = inputStream.read(buffer);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,使用了 BufferedInputStream 对 FileInputStream 进行了包装。这里需要注意的是,在使用 BufferedInputStream 时,需要在代码结束时调用 close() 方法。

用 DataInputStream 类读取文件

DataInputStream 类能够从 InputStream 中读取基本类型数据。使用 DataInputStream,可以更方便地读取文件中的数据。

示例代码:

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class DataReadBytesFromFile {

    public static void main(String[] args) {

        String filePath = "example.txt";
        byte[] buffer = new byte[1024];

        try (DataInputStream inputStream = new DataInputStream(new FileInputStream(filePath))) {

            while (inputStream.available() > 0) {
                // 读取字节
                inputStream.read(buffer);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,使用了 DataInputStream 对 FileInputStream 进行了包装。这里需要注意的是,在使用 DataInputStream 时,需要在代码结束时调用 close() 方法。

总结

本文简要介绍了如何从文件中读取字节。Java 语言中提供了多种读取文件内容的类,包括 FileInputStream、BufferedInputStream 和 DataInputStream。使用这些类可以读取文件的内容,并将其存储在字节数组中。我们需要注意在使用这些类的过程中,确保在正确的时机调用 close() 方法。

作为开发者,读取文件的能力是一项非常基本的技能。通过学习 Java 的文件 I/O,我们可以更加轻松地读取和处理文件内容,这对于很多实际应用场景来说都是非常必要的。