Java FilterReader mark()方法

java.io.FilterReader.mark(int readAheadLimit) 方法标志流的当前位置。

1 语法

public void mark(int readAheadLimit)

2 参数

readAheadLimit:在仍保留该标记的情况下被读取的字符数限制。

3 返回值

4 示例 

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * java.io.FilterReader.mark(int readAheadLimit)方法的例子
 */
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;

public class Demo {
    public static void main(String[] args) throws Exception {
        FilterReader fr = null;
        Reader r = null;

        try {
            // create new reader
            r = new StringReader("ABCDEF");

            // create new filter reader
            fr = new FilterReader(r) {
            };

            // reads and prints FilterReader
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

            // mark invoked at this position
            fr.mark(0);
            System.out.println("mark() invoked");
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

            // reset() repositioned the stream to the mark
            fr.reset();
            System.out.println("reset() invoked");
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

        } catch(IOException e) {
            // if any I/O error occurs
            e.printStackTrace();
        } finally {
            // releases system resources associated with this stream
            if(r!=null)
                r.close();
            if(fr!=null)
                fr.close();
        }
    }
}

输出结果为:

A
B
mark() invoked
C
D
reset() invoked
C
D

热门文章

优秀文章