Java FilterReader.reset()方法

原文:https://www.studytonight.com/java-file-io/java-filterreader-reset-method

在本教程中,我们将学习 JavaFilterReader 类的reset()方法。调用此方法将流重置到最近调用mark()方法的位置。这是一个非静态方法,在 java.io 包中可用,只能用类对象访问,否则用类名访问会抛出IOException

句法

这是此方法的语法声明。它不接受任何参数或返回任何值,因为它的返回类型是 void。

public void reset()

示例 1:在 Java 中重置 FilterReader

在本例中,我们将说明 reset()方法的使用,该方法将流的当前读取位置移动到最近标记的位置。在这里,我们首先检查这个流是否支持 mark()方法和标记流开头的位置,然后我们读取前五个字符,然后我们调用 reset()方法,这样当我们调用 reset()方法时,它会将指针移动到流的初始位置,并再次从流的开头开始读取。

import java.io.FilterReader;
import java.io.Reader;
import java.io.StringReader;
public class StudyTonight 
{
    public static void main(String args[])
    {
        try
        {
            Reader reader = new StringReader("Hello Studytonight"); 
            FilterReader fileReader = new FilterReader(reader){}; 
            char ch[] = new char[8]; 

            if(fileReader.markSupported()) 
            { 
                fileReader.mark(100); 
            } 
            fileReader.read(ch); 
            for (int i = 0; i < 5; i++)  
            { 
                System.out.print(ch[i]); 
            } 
            fileReader.reset(); 
            for (int i = 0; i <5 ; i++) 
            { 
                System.out.print((char)fileReader.read()); 
            } 
            fileReader.close(); 
        }
        catch(Exception e)
        {
            System.out.print("Error: "+e.toString());
        }
    } 
}

地狱深渊

示例 1:在 Java 中重置 FilterReader

如果我们一个接一个地调用 mark()和 reset()方法,那么显然它们不会显示任何效果,因为最近标记的位置和当前的读取位置是相同的。在这种情况下,它将继续从当前位置读取。

import java.io.FilterReader;
import java.io.Reader;
import java.io.StringReader;
public class StudyTonight 
{
    public static void main(String args[])
    {
        try
        {
            Reader reader = new StringReader("Hello Studytonight"); 
            FilterReader fileReader = new FilterReader(reader){};
            for (int i = 0; i <5 ; i++) 
            { 
                System.out.print((char)fileReader.read()); 
            } 
            if(fileReader.markSupported()) 
            { 
                fileReader.mark(100); 
            } 
            fileReader.reset(); 
            for (int i = 0; i <14; i++) 
            { 
                System.out.print((char)fileReader.read()); 
            } 
            fileReader.close(); 
        }
        catch(Exception e)
        {
            System.out.print("Error: "+e.toString());
        }
    } 
}

你好,今晚学习

结论

在本教程中,我们学习了 JavaFilterReader 类的reset()方法,该方法用于将流重置到最近调用mark()方法的位置。