📜  Java中的 Reader mark(int) 方法和示例(1)

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

Java中的 Reader mark(int) 方法和示例

在Java中,Reader类是一个抽象类,代表了一种用于读取字符流的抽象基类。它包含了多种方法用于读取字符,其中就包括了mark(int)方法。

mark(int)方法的作用是标记当前的位置,以便之后可以通过调用reset()方法返回到该位置继续读取字符流。其中int参数表示可以被标记的字符流的最大长度,即为readLimit

接下来我们来看一下mark(int)方法的具体应用和示例:

使用示例
import java.io.*;

public class ReaderMarkExample {
    public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("test.txt");
        char[] buffer = new char[1024];
        int length;

        reader.mark(1024); // 标记当前位置
        while ((length = reader.read(buffer)) != -1) {
            System.out.print(new String(buffer, 0, length));
        }

        reader.reset(); // 返回到标记的位置
        System.out.println();
        while ((length = reader.read(buffer)) != -1) {
            System.out.print(new String(buffer, 0, length));
        }

        reader.close();
    }
}

在该示例中,我们首先创建了一个FileReader对象,并传入文件名test.txt,即为我们要读取的文件。然后我们创建了一个大小为1024的字符数组buffer,用来存放从文件中读取出来的字符。

在第7行,我们调用了mark(1024)方法来标记文件的当前位置。接着,在一个循环中,我们调用read(char[], int, int)方法,从文件中读取1024个字符,然后将其转化成字符串输出到控制台上。

当我们读取完文件中的所有字符时,即到达文件末尾时,我们调用了reset()方法返回到之前标记的位置。然后再次循环读取文件中的字符,并输出到控制台上。

最后,我们在finally块中调用了close()方法关闭文件读取流。

返回markdown格式的代码片段
# Java中的 Reader mark(int) 方法和示例

在Java中,`Reader`类是一个抽象类,代表了一种用于读取字符流的抽象基类。它包含了多种方法用于读取字符,其中就包括了`mark(int)`方法。

`mark(int)`方法的作用是标记当前的位置,以便之后可以通过调用`reset()`方法返回到该位置继续读取字符流。其中`int`参数表示可以被标记的字符流的最大长度,即为`readLimit`。

## 使用示例

```java
import java.io.*;

public class ReaderMarkExample {
    public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("test.txt");
        char[] buffer = new char[1024];
        int length;

        reader.mark(1024); // 标记当前位置
        while ((length = reader.read(buffer)) != -1) {
            System.out.print(new String(buffer, 0, length));
        }

        reader.reset(); // 返回到标记的位置
        System.out.println();
        while ((length = reader.read(buffer)) != -1) {
            System.out.print(new String(buffer, 0, length));
        }

        reader.close();
    }
}

在该示例中,我们首先创建了一个FileReader对象,并传入文件名test.txt,即为我们要读取的文件。然后我们创建了一个大小为1024的字符数组buffer,用来存放从文件中读取出来的字符。

在第7行,我们调用了mark(1024)方法来标记文件的当前位置。接着,在一个循环中,我们调用read(char[], int, int)方法,从文件中读取1024个字符,然后将其转化成字符串输出到控制台上。

当我们读取完文件中的所有字符时,即到达文件末尾时,我们调用了reset()方法返回到之前标记的位置。然后再次循环读取文件中的字符,并输出到控制台上。

最后,我们在finally块中调用了close()方法关闭文件读取流。

结束语

以上就是mark(int)方法的介绍和使用示例。通过这个方法,我们可以方便地标记当前的位置并在之后返回到该位置继续读取字符流。