Java.io.StringReader.mark() 方法

  • 描述

    java.io.StringReader.mark(int readAheadLimit) 方法标记的流中的当前位置。对 reset() 的后续调用会将流重新定位到这一点。
  • 声明

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

    readAheadLimit - 限制在保留标记的同时可以读取的字符数。因为流的输入来自一个字符串,所以没有实际限制,所以这个参数不能为负,否则会被忽略。
  • 返回值

    此方法不返回值。
  • 异常

    IllegalArgumentException - 如果 readAheadLimit < 0。
    IOException - 如果发生 I/O 错误。
  • 例子

    以下示例显示java.io.StringReader.mark()方法的用法。
     
    package com.jc2182;
    
    import java.io.*;
    
    public class StringReaderDemo {
       public static void main(String[] args) {
          String s = "Hello World";
    
          // create a new StringReader
          StringReader sr = new StringReader(s);
    
          try {
             // read the first five chars
             for (int i = 0; i < 5; i++) {
                char c = (char) sr.read();
                System.out.print("" + c);
             }
    
             // mark the reader at position 5 for maximum 6
             sr.mark(6);
    
             // read the next six chars
             for (int i = 0; i < 6; i++) {
                char c = (char) sr.read();
                System.out.print("" + c);
             }
    
             // reset back to marked position
             sr.reset();
    
             // read again the next six chars
             for (int i = 0; i < 6; i++) {
                char c = (char) sr.read();
                System.out.print("" + c);
             }
    
             // close the stream
             sr.close();
    
          } catch (IOException ex) {
             ex.printStackTrace();
          }
       }
    }
    
    让我们编译并运行以上程序,这将产生以下结果-
     
    Hello World World