📅  最后修改于: 2023-12-03 15:31:50.611000             🧑  作者: Mango
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()
方法,使得程序员可以标记输入流的当前位置并稍后重置到此位置。该方法在读取一部分数据后需要回退到之前位置,或者多个位置之间来回切换时使用。