Java中BufferedReader类的mark()方法用于标记缓冲区读取器流中的当前位置。在调用mark()方法之后,也将随后调用同一BufferedReader类的reset()方法。 reset()方法将位置固定在最后标记的位置,以便可以再次读取相同的字节。
用法:
public void mark(int readAheadLimit)
throws IOException
覆盖:覆盖Reader类的mark()方法。
参数:此方法接受Integer类型的readAheadLimit,它表示在标记位置变为无效之前可以读取的最大字节数限制。
返回值:此方法不返回任何值。
异常:此方法可以引发两种类型的异常。
IllegalArgumentException-如果传递的参数readAheadLimit小于零,则抛出此异常。
IOException-如果发生I /O错误,则抛出此异常。
以下示例程序旨在说明IO包中BufferedReader类中的mark()方法。
程序1:假设存在文件“c:/demo.txt”。
// Java program to illustrate
// BufferedReader mark() method
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// Read the stream 'demo.txt'
// for containing text "GEEKS"
FileReader fileReader
= new FileReader(
"c:/demo.txt");
// Convert fileReader to
// bufferedReader
BufferedReader buffReader
= new BufferedReader(
fileReader);
// Read and print characters
// one by one
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
// Mark is set on the stream
buffReader.mark(0);
System.out.println(
"Char:"
+ (char)buffReader.read());
// Reset() is invoked
buffReader.reset();
// Read and print characters
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
}
}
输出:
Char:G
Char:E
Char:E
Char:K
Char:K
Char:S
程序2:假设存在文件“c:/demo.txt”。
// Java program to illustrate
// BufferedReader mark() method
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// Read the stream 'demo.txt'
// containing text "GEEKSFORGEEKS"
FileReader fileReader
= new FileReader(
"c:/demo.txt");
// Convert fileReader to
// bufferedReader
BufferedReader buffReader
= new BufferedReader(
fileReader);
// Read and print characters
// one by one
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
// Mark is set on the stream
buffReader.mark(0);
System.out.println(
"Char:"
+ (char)buffReader.read());
// Reset() is invoked
buffReader.reset();
// read and print characters
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
System.out.println(
"Char:"
+ (char)buffReader.read());
}
}
输出:
Char:G
Char:E
Char:E
Char:K
Char:S
Char:S
Char:F
Char:O
Char:R