Java FilterInputStream.reset()
方法
原文:https://www.studytonight.com/java-file-io/java-filterinputstream-reset-method
在本教程中,我们将学习 Java 中 FilterInputStream 类的 reset()方法。此方法用于将当前FilterInputStream
重新定位到给定流中最近一次调用 mark()方法的位置。这是一种非静态方法,可在 java.io 包中获得。
句法
这是此方法的语法声明。它不接受任何参数,并且该方法的返回类型是无效的,即它不返回任何值。
public void reset()
示例 1:在 Java 中重置输入流中的标记
这里,我们实现了 reset()方法,将当前流的指针重置到最近标记的位置。首先,我们最初标记当前流的位置,然后我们从文件中读取数据,然后我们通过调用方法 reset()重置指向流的指针,这将把当前流的指针移动到最近标记的位置,最近标记的位置是第一个位置,因此它将再次从头开始读取数据。
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
public class StudyTonight
{
public static void main(String args[])
{
try
{
File file = new File("E:\\studytonight\\output.txt");
FileInputStream fis = new FileInputStream(file);
FilterInputStream filterIs = new BufferedInputStream(fis);
filterIs.mark(0);
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
System.out.println("Last mark call at 0th index:- ");
filterIs.reset();
System.out.println("reset() called ");
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
fis.close();
filterIs.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
H e 第 0 个指数的最后一次标记调用:- reset()称为 H e
输出. txt
Hello Studytonight
示例 2:在 Java 中重置输入流中的标记
在这个例子中,我们正在读取数据并标记位置,然后在标记位置之后,我们通过调用方法 reset()来重置该位置,因此很明显,它不会显示任何不同的输出,因为最近标记的位置和当前位置是相同的。
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
public class StudyTonight
{
public static void main(String args[])
{
try
{
File file = new File("E:\\studytonight\\output.txt");
FileInputStream fis = new FileInputStream(file);
FilterInputStream filterIs = new BufferedInputStream(fis);
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
filterIs.mark(0);
filterIs.reset();
System.out.println("reset() called ");
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
fis.close();
filterIs.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
H e 复位()称为 l l o
输出. txt
Hello Studytonight
示例 3:在 Java 中重置输入流中的标记
如果我们调用 reset()方法而不调用任何 mark()方法会发生什么?这将引发一个正在重置为无效标记的异常。因为在这种情况下,我们没有设置任何标记,所以 reset()方法不知道最近标记的最后一个位置。
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilterInputStream;
import java.io.IOException;
public class StudyTonight
{
public static void main(String args[])
{
try
{
File file = new File("E:\\studytonight\\output.txt");
FileInputStream fis = new FileInputStream(file);
FilterInputStream filterIs = new BufferedInputStream(fis);
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
filterIs.reset();
System.out.println("reset() called ");
System.out.println((char) filterIs.read());
System.out.println((char) filterIs.read());
fis.close();
filterIs.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
H e Java . io . io 异常:重置为无效标记
结论:
在本教程中,我们学习了 Java 中 FilterInputStream 类的 reset()方法,该方法将特定FileInputStream
重置到给定输入流中最近调用 mark()方法的位置。它只能用类对象访问,如果我们试图用类名访问方法,我们会得到一个错误。