首页 > 基础资料 博客日记
FileInputStream类如何知道还有字节没读?(实践示例)
2023-05-10 23:30:23基础资料围观654次
FileInputStream类如何知道还有字节没读?
FileInputStream 类中有一个方法叫做 available(),它可以返回可在不阻塞的情况下从此输入流中读取(或跳过)的估计剩余字节数。因此,通过调用 available() 方法可以获取 FileInputStream 对象中还未被读取的字节数。通过比较已经读取的字节数和文件总的字节数,就可以知道还有多少字节没有被读取。
FileInputStream的available方法实践示例
FileInputStream 类的 available() 方法可以用于获取输入流中还未被读取的字节数。它返回的是一个估计值,并不总是准确的,但通常情况下可以作为参考来使用。
以下是使用实例:
import java.io.*;
public class Example {
public static void main(String[] args) throws Exception {
FileInputStream fis = null;
try {
fis = new FileInputStream("example.txt");
System.out.println("文件长度为 " + fis.available() + " 字节");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
fis.close();
}
}
}
}在上述示例中,我们创建了一个 FileInputStream 对象,并传入一个文件名 "example.txt"。然后我们调用 available() 方法来获取文件的长度(即还有多少字节没有被读取)。如果成功打开了文件,则会输出文件长度;否则,会输出异常栈信息。
实践示例:
假设现在有一个图片文件 image.jpg,我们要把这个文件的前 4 个字节读出来。可以使用 FileInputStream 的 read() 方法来实现:
import java.io.*;
public class Example {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("image.jpg");
int len = 4; // 读取前4个字节
byte[] bytes = new byte[len];
int count = fis.read(bytes, 0, len);
System.out.println("已经读取了 " + count + " 个字节,还有 " + fis.available() + " 个字节未读取");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}上述示例中,我们创建了一个 FileInputStream 对象来读取 "image.jpg" 文件,并把它的前 4 个字节读取到一个 byte 数组中。然后我们输出已经读取的字节数和还有多少字节未被读取。
标签:


