Java BufferedReader.mark()方法

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

在本教程中,我们将学习 JavaBufferReader 类的mark()方法。此方法标记缓冲区读取器流中的当前位置。一旦这个方法被调用,同一个 BufferedReader 类的reset()方法随后被调用,这将流重置到最近的点。

句法

下面是这个方法的语法,其参数是readAheadLimit,表示在标记无效之前可以读取的最大字符数。该方法的返回类型为void

public void mark(int readAheadLimit) throws IOException

示例 1:缓冲恐惧者标记()方法

在这个例子中,我们正在实现mark()方法,首先我们从BufferedReader 读取数据,然后调用mark() a 方法,这样我们就可以稍后从这个位置检索数据,我们再次开始读取数据。当我们调用 reset()方法时,它将通过mark() 方法在最近标记的位置设置流的位置,我们将从该位置开始读取数据。

import java.io.BufferedReader;
import java.io.FileReader;
class StudyTonight
{
    public static void main(String[] args)  
    { 
        try 
        {
            FileReader    fileReader = new FileReader("E://studytonight//output.txt"); 
            BufferedReader buffReader = new BufferedReader(fileReader);

            System.out.println(buffReader.readLine());  
            buffReader.mark(1);  
            System.out.println(buffReader.readLine());  
            buffReader.reset();  
            System.out.println(buffReader.readLine());  

            fileReader.close();
            buffReader.close();            
        }
        catch(Exception e)
        {
            System.out.println("Error: "+e.toString());
        }
    } 
}

你好今晚学习 欢迎今晚学习 欢迎今晚学习

输出. txt

Hello studytonight
Welcome to studytonight

示例 2:缓冲恐惧者标记()方法

在这个例子中,我们通过调用 mark()方法来标记流中的位置,这样我们就可以在需要的时候从这些位置开始读取数据,这里我们首先读取数据并标记()位置。当我们调用 reset()方法时,它将通过mark() 方法将流的位置设置在最近标记的位置,我们将从该位置开始读取数据。

import java.io.BufferedReader;
import java.io.FileReader;
class StudyTonight
{
    public static void main(String[] args)  
    { 
        try 
        {
            FileReader    fileReader = new FileReader("E://studytonight//output.txt"); 
            BufferedReader buffReader = new BufferedReader(fileReader);

            System.out.println(buffReader.readLine());  
            buffReader.mark(1);  
            System.out.println(buffReader.readLine());  
            System.out.println(buffReader.readLine());  
            System.out.println(buffReader.readLine());  
            System.out.println(buffReader.readLine());  
            buffReader.reset();
            System.out.println("After Calling the reset() method");
            System.out.println(buffReader.readLine());  
            System.out.println(buffReader.readLine());  
            System.out.println(buffReader.readLine());  
            fileReader.close();
            buffReader.close();            
        }
        catch(Exception e)
        {
            System.out.println("Error: "+e.toString());
        }
    } 
}

1 2 3 4 5 调用复位()方法后 2 3 4

输出. txt

1
2
3
4
5
6
7
8
9

结论

在本教程中,我们学习了 Javabuffere reader类的mark()方法,该方法标记了缓冲区读取器流中的当前位置,而同一个类的reset()方法将该流固定在这一点上。