亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

掌握 Java BufferedInputStream:高效字节读取与进阶方法详解

Java BufferedInputStream 类概览

BufferedInputStream 位于 java.io,通过内部缓冲增强字节输入流,实现更快更高效的数据读取。继承抽象 InputStream。


BufferedInputStream 工作原理

默认维护 8,192 字节内部缓冲区。读操作时,从底层流(通常为文件)获取一块字节存入缓冲区。后续读调用从缓冲区消费字节,耗尽后再加载下一块。减少昂贵磁盘 I/O,加速数据消费。


创建 BufferedInputStream

导入类:

import java.io.BufferedInputStream;
import java.io.FileInputStream;

包装低级流如 FileInputStream:

FileInputStream file = new FileInputStream("example.txt");
BufferedInputStream buffer = new BufferedInputStream(file);

可指定自定义缓冲区大小:

int bufferSize = 16_384; // 16 KB
BufferedInputStream buffer = new BufferedInputStream(file, bufferSize);

缓冲区越大,磁盘访问越少——适合大文件或网络流。


BufferedInputStream 关键方法

read()

示例:逐字节读取文本文件并打印到控制台。

import java.io.BufferedInputStream;
import java.io.FileInputStream;
public class Main {
    public static void main(String[] args) {
        try (BufferedInputStream in = new BufferedInputStream(new FileInputStream("input.txt"))) {
            int byteRead;
            while ((byteRead = in.read()) != -1) {
                System.out.print((char) byteRead);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出:

This is a line of text inside the file.

available()

available() 报告无阻塞可读字节数,可用于大流处理进度估算。

FileInputStream file = new FileInputStream("input.txt");
BufferedInputStream buffer = new BufferedInputStream(file);
System.out.println("Bytes available: " + buffer.available());
// ... 读取数据
System.out.println("Bytes remaining: " + buffer.available());
buffer.close();

skip(long n)

跳过指定字节数,返回实际跳过字节数(可能少于请求数,若到达流末尾)。

buffer.skip(5); // 跳过前 5 字节

close()

始终关闭流(推荐 try-with-resources)释放资源。关闭后不可复用。


其他重要方法

方法描述
mark(int readLimit)标记流当前位置。后续 reset() 回到此点,前提是读取字节不超过 readLimit
reset()将流重定位到最后标记位置

完整参考见 官方 Java 文档。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  10. 掌握 Java BufferedReader:高效字符流处理实战指南
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除