Java Java.io.ByteArrayInputStream.mark() 方法

  • 描述

    java.io.ByteArrayInputStream.mark(int readAheadLimit)方法设置流中当前的标记位置。默认情况下,标记ByteArrayInputStream标记在位置0。
  • 声明

    以下是java.io.ByteArrayInputStream.mark(int readAheadLimit)方法的声明-
     public void mark(int readAheadLimit)
  • 参数

    readLimit此类的整数值没有意义。
  • 返回值

    此方法不返回任何值。
  • 异常

    不适用
  • 例子

    以下示例显示java.io.ByteArrayInputStream.mark(int readAheadLimit)方法的用法。
     
    package com.jc2182;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    
    public class ByteArrayInputStreamDemo {
       public static void main(String[] args) throws IOException {
          byte[] buf = {65, 66, 67, 68, 69};
          ByteArrayInputStream bais = null;
          
          try {
             // create new byte array input stream
             bais = new ByteArrayInputStream(buf);
             
             // print bytes
             System.out.println("Byte read "+ bais.read());
             System.out.println("Byte read "+ bais.read());
             System.out.println("Byte read "+ bais.read());
             
             System.out.println("Mark() invocation");
    
             // mark() invocation;
             bais.mark(0);
             System.out.println("Byte read "+ bais.read());
             System.out.println("Byte read "+ bais.read());
             
             System.out.println("Reset() invocation");
             
             // reset() invocation
             bais.reset();
             System.out.println("Byte read "+ bais.read());
             System.out.println("Byte read "+ bais.read());
             
          } catch(Exception e) {
             // if I/O error occurs
             e.printStackTrace();
          } finally {
             if(bais!=null)
                bais.close();
          }   
       }
    }
    
    让我们编译并运行以上程序,这将产生以下结果-
     
    Byte read 65
    Byte read 66
    Byte read 67
    Mark() invocation
    Byte read 68
    Byte read 69
    Reset() invocation
    Byte read 68
    Byte read 69