Die Anleitung zu Java FilterReader
1. FilterReader
FilterReader ist eine abstrakte Unterklasse der Klasse Reader. Dies ist die Basisklasse zum Erstellen von Unterklassen zum selektiven Lesen der erforderlichen Zeichen. Sie möchten zum Beispiel ein Dokument HTML lesen und Tags ignorieren. Sie müssen eine Unterklasse von FilterReader schreiben. Sie können FilterReader nicht direkt verwenden, da es sich um eine abstrakte Klasse handelt.
FilterReader liest keine Daten direkt von Quelle (z.B die Datei) sondern verwaltet es einen anderen Reader , der für das Lesen von Daten von Quelle verantwortlich ist. FilterReader verarbeitet selektiv die Daten, die von dem von ihm verwalteten Reader abgerufen werden.
Schauen Sie an die Quellcode der Klasse FilterReader und finden Sie, dass alle Methoden, die sie von der übergeordneten Klasse erbt, wurden überschrieben, um als Delegat des von ihr verwalteten Objekt Reader zu fungieren:
FilterReader class
package java.io;
public abstract class FilterReader extends Reader {
protected Reader in;
protected FilterReader(Reader in) {
super(in);
this.in = in;
}
public int read() throws IOException {
return in.read();
}
public int read(char cbuf[], int off, int len) throws IOException {
return in.read(cbuf, off, len);
}
public long skip(long n) throws IOException {
return in.skip(n);
}
public boolean ready() throws IOException {
return in.ready();
}
public boolean markSupported() {
return in.markSupported();
}
public void mark(int readAheadLimit) throws IOException {
in.mark(readAheadLimit);
}
public void reset() throws IOException {
in.reset();
}
public void close() throws IOException {
in.close();
}
}
FilterReader constructors
protected FilterReader(Reader in)
2. Examples
Beispiel: Schreiben Sie eine Unterklasse von FilterReader um die Text HTML zu lesen aber Tags zu ignorieren.
RemoveHtmlTagReader.java
package org.o7planning.filterreader.ex;
import java.io.FilterReader;
import java.io.IOException;
import java.io.Reader;
public class RemoveHtmlTagReader extends FilterReader {
private boolean intag = false;
public RemoveHtmlTagReader(Reader in) {
super(in);
}
// We override this method.
// The principle will be:
// Read only characters outside of the tags.
@Override
public int read(char[] buf, int from, int len) throws IOException {
int charCount = 0;
while (charCount == 0) {
charCount = super.read(buf, from, len);
if (charCount == -1) {
// Ends of
return -1;
}
int last = from;
for (int i = from; i < from + charCount; i++) {
// If not in tag
if (!this.intag) {
if (buf[i] == '<') {
this.intag = true;
} else {
buf[last++] = buf[i];
}
} else if (buf[i] == '>') {
this.intag = false;
}
}
charCount = last - from;
}
return charCount;
}
// Also need to override this method.
@Override
public int read() throws IOException {
char[] buf = new char[1];
int result = read(buf, 0, 1);
if (result == -1) {
return -1;
} else {
return (int) buf[0];
}
}
}
RemoveHtmlTagTest.java
package org.o7planning.filterreader.ex;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class RemoveHtmlTagTest {
public static void main(String[] args) throws IOException {
// Create a Reader.
Reader in = new StringReader("<h1>Hello \n <b>World</b><h1>");
RemoveHtmlTagReader filterReader = new RemoveHtmlTagReader(in);
BufferedReader br = new BufferedReader(filterReader);
String s = null;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
}
}
Output:
Hello
World
Die Anleitungen Java IO
- Die Anleitung zu Java CharArrayWriter
- Die Anleitung zu Java FilterReader
- Die Anleitung zu Java FilterWriter
- Die Anleitung zu Java PrintStream
- Die Anleitung zu Java BufferedReader
- Die Anleitung zu Java BufferedWriter
- Die Anleitung zu Java StringReader
- Die Anleitung zu Java StringWriter
- Die Anleitung zu Java PipedReader
- Die Anleitung zu Java LineNumberReader
- Die Anleitung zu Java PushbackReader
- Die Anleitung zu Java PrintWriter
- Die Anleitung zu Java IO Binary Streams
- Die Anleitung zu Java IO Character Streams
- Die Anleitung zu Java BufferedOutputStream
- Die Anleitung zu Java ByteArrayOutputStream
- Die Anleitung zu Java DataOutputStream
- Die Anleitung zu Java PipedInputStream
- Die Anleitung zu Java OutputStream
- Die Anleitung zu Java ObjectOutputStream
- Die Anleitung zu Java PushbackInputStream
- Die Anleitung zu Java SequenceInputStream
- Die Anleitung zu Java BufferedInputStream
- Die Anleitung zu Java Reader
- Die Anleitung zu Java Writer
- Die Anleitung zu Java FileReader
- Die Anleitung zu Java FileWriter
- Die Anleitung zu Java CharArrayReader
- Die Anleitung zu Java ByteArrayInputStream
- Die Anleitung zu Java DataInputStream
- Die Anleitung zu Java ObjectInputStream
- Die Anleitung zu Java InputStreamReader
- Die Anleitung zu Java OutputStreamWriter
- Die Anleitung zu Java InputStream
- Die Anleitung zu Java FileInputStream
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java New IO
- Anleitungen Spring Cloud
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Java Collections Framework
- Java Grundlagen
- Die Anleitungen Java Date Time
- Java Open Source Bibliotheken
- Anleitungen Java Web Services
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Boot