Die Anleitung zu Java FilterWriter
1. FilterWriter
FilterWriter ist eine abstrakte Unterklasse der Klasse Writer. Es ist die Basisklasse zum Erstellen der Unterklassen, mit denen die erforderlichen Zeichen selektiv geschrieben werden.
FilterWriter schreibt keine Zeichen direkt in das Ziel (z.B Datei), sondern verwaltet einen anderen Writer, der für das Schreiben der Daten in das Ziel verantwortlich ist. FilterWriter filtert oder verarbeitet die darauf geschriebenen Zeichen und schreibt die Ergebnisse im Writer,den er verwaltet.
Sehen Sie sich den Quellcode von der Klasse FilterWriter an: Alle Methoden, die sie von der Oberklasse erbt, werden überschrieben, um als Proxy für das verwaltete Objekt Writer zu fungieren:
FilterWriter
public abstract class FilterWriter extends Writer {
protected Writer out;
protected FilterWriter(Writer out) {
super(out);
this.out = out;
}
public void write(int c) throws IOException {
out.write(c);
}
public void write(char cbuf[], int off, int len) throws IOException {
out.write(cbuf, off, len);
}
public void write(String str, int off, int len) throws IOException {
out.write(str, off, len);
}
public void flush() throws IOException {
out.flush();
}
public void close() throws IOException {
out.close();
}
}
FilterWriter constructors
protected FilterWriter(Writer out)
2. Examples
ROT13 ist eine einfache Buchstabenersatz-Schiffre (letter substitution cipher), die jeden Buchstaben durch einen anderen Buchstaben 13 im Alphabet ersetzt. ROT13 ist ein einfacher Fall der Caesar cipher.
Unten ist das die Tabelle mit Buchstaben und den entsprechenden alternativen Buchstaben, die Ergebnisse der Verwendung von Algorithmus ROT13.
Das grundlegende Alphabet Latinh hat 26 Buchstaben (2x13), daher konvertiert der ROT13 Algorithmus gründsätzlich einen Buchstaben in einen anderen und verwendet denselben Algorithmus, um die Ergebnisse umzukehren. Beispielsweise wandelt der Algorithmus ROT13 den Buchstabe "A" in "N" um und verwendet den Algorithmus ROT13 für "N" um das Ergebnis "A" zu erhalten.
ROT13 wird normalerweiset ein typisches Beispiel für ein schlechte Verschlüsselung (encryption).
Die folgende Klasse ROT13 bietet eine statische Methode rotate(int) , die eine Eingabe als eine Buchstabe akzeptiert und einen alternativen Buchstabe nach dem Algorithmus ROT13 zurückgibt:
ROT13.java
package org.o7planning.filterwriter.ex;
public class ROT13 {
/**
* <pre>
* a <==> n
* b <==> o
* c <==> p
* d <==> q
* e <==> r
* ...
* y <==> l
* z <==> m
* </pre>
*/
public static int rotate(int inChar) {
int outChar;
if (inChar >= (int) 'a' && inChar <= (int) 'z') {
outChar = (((inChar - 'a') + 13) % 26) + 'a';
} else if (inChar >= (int) 'A' && inChar <= (int) 'Z') {
outChar = (((inChar - 'A') + 13) % 26) + 'A';
} else {
outChar = inChar;
}
return outChar;
}
// Test
public static void main(String[] args) {
for (char ch = 'a'; ch <= 'z'; ch++) {
char m = (char) rotate(ch);
System.out.println(ch + " ==> " + m);
}
System.out.println(" --- ");
for (char ch = 'A'; ch <= 'Z'; ch++) {
char m = (char) rotate(ch);
System.out.println(ch + " ==> " + m);
}
}
}
Schreiben Sie die Klasse ROT13Writer, die aus der Klasse FilterWriter erweitert. Die im ROT13Writer geschriebenen Zeichen werden nach dem Algorithmus ROT13 ersetzt:
ROT13Writer.java
package org.o7planning.filterwriter.ex;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.Writer;
public class ROT13Writer extends FilterWriter {
public ROT13Writer(Writer out) {
super(out);
}
@Override
public void write(int outChar) throws IOException {
super.write(ROT13.rotate(outChar));
}
@Override
public void write(char[] cbuf, int offset, int length) throws IOException {
char[] tempbuf = new char[length];
for (int i = 0; i < length; i++) {
tempbuf[i] = (char) ROT13.rotate(cbuf[offset + i]);
}
super.write(tempbuf, 0, length);
}
@Override
public void write(String str, int off, int len) throws IOException {
char[] cbuf = str.toCharArray();
this.write(cbuf, off, len);
}
}
Das Beispiel für die Verwendung von ROT13Writer:
ROT13WriterTest1.java
package org.o7planning.filterwriter.ex;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
public class ROT13WriterTest1 {
public static void main(String[] args) throws IOException {
Writer targetWriter = new StringWriter();
FilterWriter filterWriter = new ROT13Writer(targetWriter);
String inputString = "Hello";
filterWriter.write(inputString);
filterWriter.close();
String outputString = targetWriter.toString();
System.out.println(inputString + " ==> " + outputString);
}
}
Output:
Hello ==> Uryyb
Z.B: Das Verwendung von ROT13Writer zum Schreiben von Daten in die Datei:
ROT13WriterTest2.java
package org.o7planning.filterwriter.ex;
import java.io.File;
import java.io.FileWriter;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.Writer;
public class ROT13WriterTest2 {
public static void main(String[] args) throws IOException {
// Windows: C:/somedir/rot13-out-file.txt
File outFile = new File("/Volumes/Data/test/rot13-out-file.txt");
outFile.getParentFile().mkdirs();
Writer targetWriter = new FileWriter(outFile);
FilterWriter filterWriter = new ROT13Writer(targetWriter);
String inputString = "Uryyb";
filterWriter.write(inputString);
filterWriter.close();
}
}
Output:
rot13-out-file.txt
Hello
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