Java CharArrayReader mark(int)方法及示例
Java中CharArrayReader类的mark()方法用于标记流,一旦调用reset(),流的读取将从该点开始。并非CharArrayReader类的所有子类都支持这个方法。
语法。
public void mark(int readAheadLimit)
参数。该方法接受一个强制性参数readAheadLimit,它是在保留标记的情况下可以读取的字符数的限制。在读取这么多的字符后,试图重置流可能会失败。
返回值。此方法不返回任何值。
异常。如果在输入输出时发生一些错误或者mark()方法不被支持,该方法会抛出IOException。
下面的方法说明了mark()方法的工作。
程序 1:
// Java program to demonstrate
// CharArrayReader mark() method
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
try {
char[] str = { 'G', 'e', 'e', 'k', 's',
'F', 'o', 'r',
'G', 'e', 'e', 'k', 's' };
// Create a CharArrayReader instance
CharArrayReader reader
= new CharArrayReader(str);
// Get the character
// to be read from the stream
int ch;
// Read the first 10 characters
// to this reader using read() method
// This will put the str in the stream
// till it is read by the reader
for (int i = 0; i < 10; i++) {
ch = reader.read();
System.out.print((char)ch);
}
System.out.println();
// mark the stream for
// 5 characters using mark()
reader.mark(5);
// reset the stream position
reader.reset();
// Read the 5 characters from marked position
// to this reader using read() method
for (int i = 0; i < 5; i++) {
ch = reader.read();
System.out.print((char)ch);
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
输出:
GeeksForGe
eks??
计划2。
// Java program to demonstrate
// CharArrayReader mark() method
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
try {
char[] str = { 'G', 'e', 'e', 'k',
's', 'F', 'o', 'r',
'G', 'e', 'e', 'k', 's' };
// Create a CharArrayReader instance
CharArrayReader reader
= new CharArrayReader(str);
// Get the character
// to be read from the stream
int ch;
// Read the first 10 characters
// to this reader using read() method
// This will put the str in the stream
// till it is read by the reader
for (int i = 0; i < 10; i++) {
ch = reader.read();
System.out.print((char)ch);
}
System.out.println();
// mark the stream for
// 10 characters using mark()
reader.mark(10);
// reset the stream position
reader.reset();
// Read the 1 characters from marked position
// to this reader using read() method
for (int i = 0; i < 1; i++) {
ch = reader.read();
System.out.print((char)ch);
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
输出:
GeeksForGe
e
参考资料: https://docs.oracle.com/javase/9/docs/api/java/io/CharArrayReader.html#mark-int-