Java ByteArrayInputStream mark()方法与示例

ByteArrayInputStream类mark()方法

  • mark()方法在java.util包中可用。

  • mark()方法用于设置流中的当前标记位置,从该位置可以重置读取或写入。

  • mark()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • 在寻求标记位置时,mark()方法可能会引发异常。
    IOException:执行输入/输出操作时可能会抛出此异常。

语法:

    public void mark(int read_from_here);

参数:

  • int read_from_here –表示可以开始读取或写入的标记位置。

返回值:

该方法的返回类型为void,不返回任何内容。

示例

//Java程序演示示例 
// 标记(int read_from_here)方法
//ByteArrayInputStream-

import java.io.*;

public class MarkBAIS {
    public static void main(String[] args) throws Exception {
        byte[] by = {
            97,
            98,
            98,
            99
        };

        //实例化ByteArrayInputStream- 
        ByteArrayInputStream byte_s = new ByteArrayInputStream(by);

        //通过使用available()方法是
        //返回编号 剩余字节数 
        //阅读
        Integer n_byte = byte_s.available();
        System.out.println("Left avail bytes = " + n_byte);

        //从流中读取字符
        char ch1 = (char) byte_s.read();
        char ch2 = (char) byte_s.read();
        char ch3 = (char) byte_s.read();

        System.out.println("ch1: " + ch1);
        System.out.println("ch2 : " + ch2);

        System.out.println("byte_s.mark(5): ");
        //通过使用mark()方法isto-
        //设置限制的字节数
        //被阅读 
        byte_s.mark(5);
        System.out.println("ch3: " + ch3);

        System.out.println("buff_str.reset(): ");
        //重置流
        byte_s.reset();

        //从书架上读取
        char ch4 = (char) byte_s.read();
        char ch5 = (char) byte_s.read();

        //显示字符
        System.out.println("ch4: " + ch4);
        System.out.println("ch5: " + ch5);
        byte_s.close();
    }
}

输出结果

Left avail bytes = 4
ch1: a
ch2 : b
byte_s.mark(5):
ch3: b
buff_str.reset():
ch4: c
ch5: ?