📜  Java IO-FileInputStream(1)

📅  最后修改于: 2023-12-03 14:42:14.619000             🧑  作者: Mango

Java IO-FileInputStream介绍

FileInputStream 是Java中用于从文件中读取数据的输入流。它继承自InputStream类,并实现了CloseableAutoCloseable接口,因此可以在使用完毕后关闭流。本文将介绍FileInputStream的使用方法和一些常用的操作。

导入依赖

在使用FileInputStream之前,需要在程序中导入以下依赖:

import java.io.FileInputStream;
import java.io.IOException;
创建FileInputStream对象

我们可以通过以下两种方式创建FileInputStream对象:

1. 使用文件路径创建
String filePath = "path/to/file.txt";
try {
    FileInputStream fis = new FileInputStream(filePath);
    // 使用fis进行文件读取操作
} catch (IOException e) {
    e.printStackTrace();
}
2. 使用File对象创建
import java.io.File; 

File file = new File("path/to/file.txt");
try {
    FileInputStream fis = new FileInputStream(file);
    // 使用fis进行文件读取操作
} catch (IOException e) {
    e.printStackTrace();
}
读取文件内容

通过FileInputStream对象,我们可以使用以下方法读取文件的内容:

int data = -1;
try {
    while ((data = fis.read()) != -1) {
        // 处理读取到的数据
    }
} catch (IOException e) {
    e.printStackTrace();
}

在上述例子中,read()方法会读取文件的下一个字节并返回其值。如果已经达到文件的末尾,它将返回-1。

读取指定长度的字节

除了逐字节读取外,FileInputStream还提供了一种方式来读取特定长度的字节数据:

byte[] buffer = new byte[1024]; // 缓冲区大小
int bytesRead = 0;
try {
    while ((bytesRead = fis.read(buffer)) != -1) {
        // 处理读取到的字节数据
    }
} catch (IOException e) {
    e.printStackTrace();
}

在上述代码中,read(byte[] buffer)方法会尝试将最多 buffer.length 个字节读入到缓冲区中,并返回实际读取的字节数。如果已经达到文件的末尾,它将返回-1。

关闭FileInputStream

为了释放系统资源,使用完毕后应该及时关闭FileInputStream。可以通过调用close()方法来关闭流:

try {
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}

通常,为了确保关闭操作的执行,我们可以在finally块中关闭流。从Java7开始,我们还可以通过try-with-resources语法自动关闭流:

try (FileInputStream fis = new FileInputStream(file)) { 
    // 使用fis进行文件读取操作
} catch (IOException e) {
    e.printStackTrace();
}

以上是关于FileInputStream的基本介绍和使用方法的说明。通过该类,您可以方便地从文件中读取数据,并进行相应的处理。