101 Stimmen

Wie konvertiert man einen Reader in einen InputStream und einen Writer in einen OutputStream?

Gibt es eine einfache Möglichkeit, Probleme mit der Textkodierung zu vermeiden?

7voto

Bozho Punkte 570413

5voto

Tom Hawtin - tackline Punkte 142461

Die naheliegenden Namen für diese Klassen sind ReaderInputStream und WriterOutputStream. Leider sind diese nicht in der Java-Bibliothek enthalten. Aber Google ist Ihr Freund.

Ich bin mir nicht sicher, ob damit alle Probleme mit der Textkodierung gelöst werden können, die ein Alptraum sind.

Es gibt einen RFE, aber es ist geschlossen, wird nicht repariert.

1 Stimmen

bugs.openjdk.java.net/browse/JDK-4103785 enthält die Bemerkung "wir haben eine öffentliche API für Zeichensatzkodierung ... kein zwingender Grund, diese Klassen hinzuzufügen" -- wie also macht man das in Java 7, ohne zusätzliche Bibliotheken, zwölf Jahre später?

5voto

dfrankow Punkte 18101

Sie können Probleme mit der Textkodierung nicht vermeiden, aber Apache commons-io hat

Beachten Sie, dass dies die Bibliotheken sind, auf die in Peters Antwort von koders.com verwiesen wird, nur mit Links zu den Bibliotheken anstelle des Quellcodes.

4voto

Sam Barnum Punkte 10220

Versuchen Sie, den Inhalt einer Reader zu einer OutputStream ? Wenn ja, wird es einfacher sein, die OutputStream in einem OutputStreamWriter und schreiben die char s aus dem Reader à la Writer anstatt zu versuchen, den Leser zu einem InputStream :

final Writer writer = new BufferedWriter(new OutputStreamWriter( urlConnection.getOutputStream(), "UTF-8" ) );
int charsRead;
char[] cbuf = new char[1024];
while ((charsRead = data.read(cbuf)) != -1) {
    writer.write(cbuf, 0, charsRead);
}
writer.flush();
// don't forget to close the writer in a finally {} block

2voto

yegor256 Punkte 96888

Sie können verwenden Kakteen (keine statischen Methoden, nur Objekte):

Sie können auch andersherum konvertieren:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X