首页 > 基础资料 博客日记
FileInputStream类如何知道还有字节没读?(实践示例)
2023-05-10 23:30:23基础资料围观696次
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 数组中。然后我们输出已经读取的字节数和还有多少字节未被读取。
标签:
相关文章
最新发布
- 【开源工具分享】一款开源的高效PDF合并与图片转换工具:mergePDF,一款轻量级桌面可视化工具,支持将多个PDF文件合并为单一PDF,也可将PDF转换为图片格式,并提供“单张图片”与“长图片”两种
- 剑指offer-56、删除链表中重复的节点
- jvm~分析gc老年代内存过高的原因
- Java 哪些情况会导致内存泄漏
- Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
- 回溯算法总结
- Java 操作 Markdown(1)--commonmark-java 使用
- 分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
- jvm~jvm配置与系统配置的关系
- 使用Java Stream,将集合转换为一对一Map


