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()方法检索最近标记的位置,并且我们可以从该位置开始读取。