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“