Java中的 BufferedInputStream reset() 方法及示例
Java中BufferedInputStream类的reset()方法用于将流的位置重置为最后一次调用mark方法时的位置。它与同一类的mark()方法组合使用。
一般合同:
有两种情况:
- 如果支持 mark() 和 reset(),即如果 markSupported 返回 true,
- 如果自创建输入流后未调用 mark() 或自上次调用 mark() 方法后从输入流中读取的字节大于最后一次调用 mark 方法的参数,则可能引发 IOException称呼。
- 如果没有抛出 IOException,则输入流将重置为一种状态,以便在最近一次调用 mark() 之后读取的所有字节再次提供给 read() 的后续调用者。后面是 reset() 调用时的字节。
- 如果不支持 mark() 和 reset(),即如果 markSupported 返回 false,
- 调用 reset() 方法可能会引发 IOException。
- 如果未抛出 IOException,则输入流将重置为取决于输入流的特定类型的固定状态。为 read() 的后续调用者提供的字节取决于输入流的特定类型。
句法:
public void reset()
Overrides:该方法覆盖FilterInputStream中的reset类。
参数:此方法不接受任何参数。
返回值:此方法不返回任何值。
异常:如果此流尚未被标记或标记已失效或输入流已通过调用 close() 方法关闭或发生 I/O 错误,则此方法抛出IOException 。
下面的程序说明了 IO 包中 BufferedInputStream 类中的 reset() 方法:
程序1:假设文件“c:/demo.txt”存在。
// Java program to illustrate
// BufferedInputStream reset() method
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// Create input stream 'demo.txt'
// for reading containing text "GEEKS"
FileInputStream inputStream
= new FileInputStream(
"c:/demo.txt");
// Convert inputStream to
// bufferedInputStream
BufferedInputStream buffInputStr
= new BufferedInputStream(
inputStream);
// Read and print characters one by one
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
// Mark is set on the input stream
buffInputStr.mark(0);
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"reset() called");
// Reset() is invoked
buffInputStr.reset();
// Read and print characters
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
}
}
输入:
输出:
程序2:假设文件“c:/demo.txt”存在。
// Java program to illustrate
// BufferedInputStream reset() method
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// Create input stream 'demo.txt'
// for reading containing text
// "GEEKSFORGEEKS"
FileInputStream inputStream
= new FileInputStream(
"c:/demo.txt");
// Convert inputStream to
// bufferedInputStream
BufferedInputStream buffInputStr
= new BufferedInputStream(
inputStream);
// Read and print characters one by one
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
// Mark is set on the input stream
buffInputStr.mark(0);
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"reset() called");
// Reset() is invoked
buffInputStr.reset();
// Read and print characters
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
System.out.println(
"Char : "
+ (char)buffInputStr.read());
}
}
输入:
输出:
参考:
https://docs.oracle.com/javase/10/docs/api/java Java()