Nach einigen Überlegungen und Tests sind mir meine alten StringBufferInputStream und StringBufferOutputStream Konstrukte von ein paar Posts früher irgenwie buggy vorgekommen. Vor allem gab und gibts Schwierigkeiten mit Sonderzeichen – dieses Thema hatte ich bis heute eigentlich total ignoriert.
Nunja, aufgeben darf man ja nie – daher hab ich einen neuen Ansatz versucht, der besser funktioniert – und man muss auch nicht mehr den Umweg über einen StringBuffer machen.
import java.io.IOException; import java.io.InputStream; import java.io.StringReader; public class StringInputStream extends InputStream { StringReader stringReader; public StringInputStream(String string) { this.stringReader = new StringReader(string); } @Override public int read() throws IOException { return stringReader.read(); } }
import java.io.IOException; import java.io.OutputStream; import java.io.StringWriter; public class StringOutputStream extends OutputStream { StringWriter stringWriter; public StringOutputStream() { this.stringWriter = new StringWriter(); } @Override public String toString() { return stringWriter.toString(); } public StringBuffer toStringBuffer() { return stringWriter.getBuffer(); } @Override public void write(int b) throws IOException { this.stringWriter.write(b); } }
Einfache Tests mit Umlauten und Sonderzeichen sind erfolgreich gelaufen, ich denke aber ein paar kleinere Optimierungsmöglichkeiten bleiben mir immer noch 🙂
1 Gedanke zu „StringInputStream StringOutputStream“