📜  Java中的 FileInputStream available() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:52.404000             🧑  作者: Mango

Java中的FileInputStream available()方法及示例

FileInputStream类是Java字节流中的一种。它用于从文件系统中的文件中读取字节。available()方法是FileInputStream类的一个方法,它可以返回文件中尚未读取的字节数。本文将探讨FileInputStream类中available()方法的详细用法及示例。

方法

public int available() throws IOException

返回值: 文件中尚未读取的字节数。

异常: 可能抛出IOException

该方法返回的值是下一个输入操作可以读取的字节数。 返回值等于文件的总大小减去已经读取的字节数。 如果文件大小发生了变化,这也会影响available()方法的返回值。例如,如果在读取文件时有其他程序向文件中写入数据,则available()返回的值可能会减少。

示例

以下示例展示了如何使用FileInputStream类及available()方法读取文件中的字节数。

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

public class ReadFileExample {
  public static void main(String[] args) {
    try {
      FileInputStream input = new FileInputStream("example.txt");
      int availableBytes = input.available();
      System.out.printf("File size: %d bytes%nBytes available to read: %d%n",
        input.getChannel().size(), availableBytes);
      byte[] bytes = new byte[availableBytes];
      int bytesRead = input.read(bytes);
      System.out.printf("Bytes read: %d%n%s", bytesRead, new String(bytes));
      input.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

在此示例中,我们创建了一个名为“example.txt”的文本文件。然后,我们在try块中打开文件example.txt,并获取文件中尚未读取的字节数。 接下来,我们根据读取的字节数大小创建一个字节数组,并使用read()方法将字节读取到数组中。 最后,我们在catch块中捕获可能抛出的异常,并打印出错误信息。

输出:

File size: 48 bytes
Bytes available to read: 48 bytes
Bytes read: 48
Java is a programming language

在上面的输出中,我们可以看到文件大小为48字节,而剩余可以读取的字节数也是48字节。由于该文件内没有换行符,所以我们读取了整个文件。

结论

FileInputStream类的available()方法很有用,可以让我们知道文件中有多少字节数尚未读取。 但是,我们应该记住,在读取文件时,由于其他程序向文件中写入数据,文件大小可能会发生变化,从而影响available()方法的返回值。因此,在读取文件中使用此方法时,请谨慎处理。