📜  Java中的 BufferedReader mark() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:20.874000             🧑  作者: Mango

Java中的 BufferedReader mark() 方法及示例

BufferedReader 是 Java 中用于读取字符流的类。它提供了 mark() 方法来标记流中的当前位置,并允许稍后返回该位置。本文将介绍 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() 方法。该方法允许我们在读取流中的数据时标记当前位置,并随后返回到标记点。此方法尤其适用于需要多次读取流中数据的情况下。