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

Java ByteArrayInputStream 实战指南:从字节数组高效读取数据

Java ByteArrayInputStream

ByteArrayInputStream 位于 java.io,实现 InputStream,可将字节数组作为输入流处理。内部保存数组副本,支持随机访问和高效读取。

注意: 流从数组本身读取,非外部源,所有操作基于内存。


创建 ByteArrayInputStream

导入 java.io.ByteArrayInputStream 并实例化,可读整个数组或切片:

ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);

第二个构造器从索引 start 读 length 字节。


核心方法

read()

示例:读取字节

import java.io.ByteArrayInputStream;
public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            System.out.print("Bytes read: ");
            int value;
            while ((value = input.read()) != -1) {
                System.out.print(value + ", ");
            }
            System.out.println();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出

Bytes read: 1, 2, 3, 4, 

available()

返回无阻塞仍可读字节数。

import java.io.ByteArrayInputStream;
public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            System.out.println("Initially: " + input.available());
            input.read(); input.read();
            System.out.println("After 2 reads: " + input.available());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出

Initially: 4
After 2 reads: 2

skip()

按指定字节数前移流位置。

import java.io.ByteArrayInputStream;
public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            input.skip(2);
            System.out.print("After skip: ");
            int value;
            while ((value = input.read()) != -1) {
                System.out.print(value + ", ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出

After skip: 3, 4, 

close()

关闭 ByteArrayInputStream 无实际效果;关闭后仍可使用。方法仅为 API 兼容性保留。


其他实用方法

方法描述
mark(int readlimit)标记当前位置
reset()回到最后标记位置
markSupported()始终返回 true
finalize()确保资源释放(本类无实际效果)

完整 API 见 官方 Java 文档。

java

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