📅  最后修改于: 2023-12-03 15:31:52.404000             🧑  作者: Mango
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()
方法的返回值。因此,在读取文件中使用此方法时,请谨慎处理。