Java 中的 BufferedInputStream reset()方法,示例
原文:https://www . geeksforgeeks . org/bufferedinputstream-reset-method-in-Java-with-examples/
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()
覆盖:该方法覆盖 FilterInputStream 中的重置类。
参数:此方法不接受任何参数。
返回值:此方法不返回值。
异常:如果此流未被标记或标记已被无效,或输入流已通过调用 close()方法关闭,或出现输入/输出错误,此方法将抛出 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());
}
}
Input:Output:
程序 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());
}
}
Input:Output:
参考文献: https://docs . Oracle . com/javase/10/docs/API/Java/io/bufferedinputstream . html # reset()
版权属于:月萌API www.moonapi.com,转载请注明出处