Java FilterReader
原文:https://www.studytonight.com/java-file-io/java-filterreader
在本教程中,我们将学习 Java 中的FilterReader
。FilterReader
类用于对读取器流执行过滤操作。这是一个基类,当我们试图实现自己的自定义过滤方法进行阅读时。这个类覆盖了Reader
类的所有方法。如果我们扩展这个类,那么我们将自动扩展一个 Reader 类。
构造器
FilterReader 类的构造器如下所示:
构造器 | 描述 |
---|---|
protected FilterReader(Reader in) |
它会创建一个新的过滤读取器。 |
方法
FilterReader
类的所有方法如下:
方法 | 描述 |
---|---|
void close() |
此方法关闭流并释放与其关联的任何系统资源。 |
void mark(int readAheadLimit) |
此方法标记流中的当前位置。 |
boolean markSupported() |
此方法告知此流是否支持 mark()操作。 |
boolean ready() |
这个方法告诉这个流是否准备好被读取。 |
int read() |
此方法读取单个字符。 |
int read(char[] cbuf, int off, int len) |
此方法将字符读入数组的一部分。 |
void reset() |
此方法重置流。 |
long skip(long n) |
此方法跳过字符。 |
FilterReader 类的示例
在下面的示例中,我们实现了 FilterReader 类的 read()方法来从文件中读取数据。这里我们使用的方法没有修改,所以我们将得到与文本文件中相同的结果。在下一个示例中,我们将看到如何定制 read 方法,以便按照我们的要求以特定的格式读取数据。
package studytonight;
import java.io.FileReader;
import java.io.FilterReader;
import java.io.Reader;
public class StudyTonight
{
public static void main(String args[])
{
try
{
Reader reader = new FileReader("E:\\studytonight\\output.txt");
FilterReader filterReader = new FilterReader(reader) {};
int i;
while ((i = filterReader.read()) != -1) {
System.out.print((char) i);
}
filterReader.close();
reader.close();
}
catch(Exception e)
{
System.out.println("Error: "+e.toString());
}
}
}
你好,今晚学习
输出. txt
Hello Studytonight
FilterReader 类的示例
在本例中,我们将看到如何通过覆盖类中的方法来将修改应用于 FilterReader 类的方法。这里我们将覆盖 read 方法,每当出现 `'
'(空格)时,它将返回
'*'` (星号)符号。为此,我们首先声明了 MyReader 类,并继承了 FilterReader 类,然后我们覆盖了上面提到的逻辑的读取方法。在输出中,我们可以看到每当出现空格时,它都会返回星号。
package studytonight;
import java.io.FileReader;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
class MyReader extends FilterReader
{
protected MyReader(Reader in)
{
super(in);
}
public int read() throws IOException
{
int x = super.read();
if ((char) x == ' ')
return ('*');
else
return x;
}
}
public class StudyTonight
{
public static void main(String args[])
{
try
{
Reader reader = new FileReader("E:\\studytonight\\output.txt");
MyReader filterReader = new MyReader(reader);
int i;
while ((i = filterReader.read()) != -1) {
System.out.print((char) i);
}
filterReader.close();
reader.close();
}
catch(Exception e)
{
System.out.println("Error: "+e.toString());
}
}
}
你好*今晚学习
输出. txt
Hello Studytonight
FilterReader 类的示例
在这个例子中,我们实现了FIlterReader
类的各种方法。在这里,我们最初使用 StringReader 类创建了一个读取器。然后通过使用FilterReader
类的 skip()方法,它将跳过读取前 8 个字符,并指向第 9 个字符,这就是为什么当我们试图读取时,它将从第 9 个字符开始。我们可以使用ready()
方法来检查读者是否准备好阅读。在程序中,我们从第 9 个位置开始向前读取 8 个字符,然后在调用 reset()方法后指针将回到初始位置。我们可以看到,当我们在重置方法后读取数据时,它会从头开始显示。
package studytonight;
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("Welcome to Studytonight");
FilterReader filterReader = new FilterReader(reader){};
char ch[] = new char[28];
filterReader.skip(8);
if(filterReader.ready())
{
filterReader.read(ch);
for (int i = 0; i < 8; i++)
{
System.out.print(ch[i]);
}
System.out.print("\n");
filterReader.reset();
for (int i = 0; i <7; i++)
{
System.out.print((char)filterReader.read());
}
}
filterReader.close();
}
catch(Exception e)
{
System.out.println("Error: "+e.toString());
}
}
}
学习 欢迎
结论
在本教程中,我们学习了FilterReader
方法。FilterReader
类用于对读取器流执行过滤操作。这是一个基类,当我们试图实现自己的自定义过滤方法进行阅读时。