Java FilterReader.mark()方法

原文:https://www.studytonight.com/java-file-io/filterreader-mark-method-in-java

在本教程中,我们将在 Java 中学习 FilterReader 类的mark()方法。此方法标记流中的当前位置,当我们调用 reset()方法时,我们可以通过 mark()方法检索最近标记的位置,并且我们可以从该位置开始读取。

句法

这是mark()方法的语法声明,这个方法不返回任何东西,因为它的返回类型是 void,但是它将一个参数作为readAheadLimit,基本上,它限制了可以读取的字符数量,同时仍然保留了标记。

public void mark(int readAheadLimit)

示例 1:过滤器读取器的标记方法

在本例中,我们将演示 mark()方法的使用,我们调用该方法来标记缓冲区的位置,当我们调用 reset 方法时,它将转到最近标记的位置,从该位置,我们可以进一步读取数据。

import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
class StudyTonight
{
    public static void main(String[] args)  
    { 
        FilterReader fr = null;
        Reader r = null;      

        try 
        {
            r = new StringReader("ABCDEF");

            fr = new FilterReader(r) {};

            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

            fr.mark(0);
            System.out.println("mark() called");
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

            fr.reset();
            System.out.println("reset() called");
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());

        } 
        catch(IOException e)
        {
            System.out.println("Error: "+e.toString());
        }  
    }
}

A B 标记()称为 C D 复位()称为 C D

示例 2:过滤器读取器的标记方法

在这里,我们实现了 mark()方法,但是我们不会使用 reset()方法来显示这两种方法是如何一起工作的,当我们调用 mark()方法时,它会标记缓冲区的位置并开始读取数据。如果我们不调用 reset()方法,那么显然它在 read()方法的工作中不会显示任何差异。

import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
class StudyTonight
{
    public static void main(String[] args)  
    { 
        FilterReader fr = null;
        Reader r = null;      
        try 
        {
            r = new StringReader("ABCDEF");
            fr = new FilterReader(r) {};
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());
            fr.mark(0);
            System.out.println("mark() called");
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());
            System.out.println((char)fr.read());
        } 
        catch(IOException e)
        {
            System.out.println("Error: "+e.toString());
        }  
    }
}

A B 标记()称为 C D E F

结论

在本教程中,我们学习了 Java 中 FilterReader 类的 mark()方法。此方法标记流中的当前位置,当我们调用 reset()方法时,我们可以通过 mark()方法检索最近标记的位置,并且我们可以从该位置开始读取。