📌  相关文章
📜  Java中的 ByteArrayInputStream mark() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:50.611000             🧑  作者: Mango

Java中的 ByteArrayInputStream mark() 方法及示例

mark() 方法简介

mark() 方法是 ByteArrayInputStream 类中的方法,该方法的作用是标记流的当前位置。通过调用此方法,输入流中的数据可以在稍后的某个时间重新读取。

方法签名
public synchronized void mark(int readlimit)

方法参数 readlimit 表示在失去标记之前,此输入流可以读取的最大数据量。

示例代码

以下为使用 mark() 方法的示例代码。

import java.io.ByteArrayInputStream;
import java.io.IOException;

public class ByteArrayInputStreamDemo {
    public static void main(String[] args) throws IOException {
        byte[] byteArray = {10, 20, 30, 40, 50};
        ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);

        // 读取前三个字节
        System.out.println("Read first three bytes:");
        for (int i = 0; i < 3; i++) {
            int value = bais.read();
            System.out.println(value);
        }

        // 标记当前位置,最多可以读取两个字节
        bais.mark(2);

        // 读取两个字节
        System.out.println("Read two bytes:");
        for (int i = 0; i < 2; i++) {
            int value = bais.read();
            System.out.println(value);
        }

        // 重置到之前标记的位置
        bais.reset();

        // 读取标记位置之后的两个字节
        System.out.println("Read two bytes after reset:");
        for (int i = 0; i < 2; i++) {
            int value = bais.read();
            System.out.println(value);
        }
    }
}

输出结果如下:

Read first three bytes:
10
20
30
Read two bytes:
40
50
Read two bytes after reset:
40
50
总结

ByteArrayInputStream 类提供了 mark() 方法,使得程序员可以标记输入流的当前位置并稍后重置到此位置。该方法在读取一部分数据后需要回退到之前位置,或者多个位置之间来回切换时使用。