首页 > 基础资料 博客日记

FileInputStream类如何知道还有字节没读?(实践示例)

2023-05-10 23:30:23基础资料围观306

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 数组中。然后我们输出已经读取的字节数和还有多少字节未被读取。


标签:

相关文章

本站推荐

标签云