📅  最后修改于: 2023-12-03 15:16:20.874000             🧑  作者: Mango
BufferedReader
是 Java 中用于读取字符流的类。它提供了 mark()
方法来标记流中的当前位置,并允许稍后返回该位置。本文将介绍 mark()
方法及其示例。
mark()
方法的语法如下:
public void mark(int readAheadLimit) throws IOException
该方法接受一个整数类型参数 readAheadLimit
,用于指定读取流中数据的最大字节数,超出该字节数则不能返回到标记点。
下面是一个使用 BufferedReader
的示例代码,演示了如何使用 mark()
方法:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
String fileName = "sample.txt";
int readAheadLimit = 1024;
try(BufferedReader br = new BufferedReader(new FileReader(fileName))) {
// mark current position
br.mark(readAheadLimit);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
if (line.startsWith("test")) {
// reset stream to last mark
br.reset();
System.out.println("reset to last mark");
break;
}
// set next mark
br.mark(readAheadLimit);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个示例演示了如何在 BufferedReader
中使用 mark()
方法。具体而言,我们在 while 循环中不断调用 readLine()
方法读取文件内容,重新设置标记点,以便稍后可以返回到上一个标记点。
我们还可以注意到当读取到 test
开头的行时,我们调用了 reset()
方法以返回到最后一个标记点。
在本文中,我们看到了 BufferedReader
提供的 mark()
方法。该方法允许我们在读取流中的数据时标记当前位置,并随后返回到标记点。此方法尤其适用于需要多次读取流中数据的情况下。