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

📅  最后修改于: 2022-05-13 01:54:30.255000             🧑  作者: Mango

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

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

参考:
https://docs.oracle.com/javase/10/docs/api/java Java)