InputStream nach String konvertieren

3 Kommentare

Leider bringt die Google Suche nach „Convert InputStream to String“ immernoch Ratschläge wie StringBuffer, byte[] oder sonstwas. Wenn man sich den Wildwuchs dort ansieht bekommt man graue Haare. Daher in der Hoffnung, daß es in Zukunft nur noch diese Lösung gibt dieses Posting 🙂

 InputStream stream = getClass().getResourceAsStream("/classpath/resource.xml");
 String xml = org.apache.commons.io.IOUtils.toString(stream);
Avatar

Fabian Lange ist Lead Agent Engineer bei Instana und bei der codecentric als Performance Geek bekannt. Er baut leidenschaftlich gerne schnelle Software und hilft anderen dabei, das Gleiche zu tun.
Er kennt die Java Virtual Machine bis in die letzte Ecke und beherrscht verschiedenste Tools, die JVM, den JIT oder den GC zu verstehen.
Er ist beliebter Vortragender auf zahlreichen Konferenzen und wurde unter anderem mit dem JavaOne Rockstar Award ausgezeichnet.

Über 1.000 Abonnenten sind up to date!

Die neuesten Tipps, Tricks, Tools und Technologien. Jede Woche direkt in deine Inbox.

Kostenfrei anmelden und immer auf dem neuesten Stand bleiben!
(Keine Sorge, du kannst dich jederzeit abmelden.)

Hiermit willige ich in die Erhebung und Verarbeitung der vorstehenden Daten für das Empfangen des monatlichen Newsletters der codecentric AG per E-Mail ein. Ihre Einwilligung können Sie per E-Mail an datenschutz@codecentric.de, in der Informations-E-Mail selbst per Link oder an die im Impressum genannten Kontaktdaten jederzeit widerrufen. Von der Datenschutzerklärung der codecentric AG habe ich Kenntnis genommen und bestätige dies mit Absendung des Formulars.

Kommentare

  • Robert Krombholz

    13. August 2009 von Robert Krombholz

    Super!
    Danke für den Post.
    Habe erst gestern nach einer Lösung dafür gesucht.
    Bin dann auch per Google über diese recht unschöne byte[] lösung gestolpert.
    Sollte mir angewöhnen erstmal bei den Commons projekten nachzuschauen.

    Frage: Gibts es eine ähnliche Lösung um Strings in InputStreams zu lesen außer per byte[]?
    Habe dazu bei Commons IO auf den ersten Blick nichts finden können.
    Der StringBufferInputStream (Deprecated) verweißt auf den StringReader. Der hilft mich da aber auch nicht sonderlich weiter.

  • Carsten Mjartan

    In diesem Zusammenhang sollte man noch daran denken, das Encoding explizit anzugeben.

    Gerade beim Einsatz verschiedener Umgebungen für Entwicklung, Test und Produktion kann man sich nicht immer auf ein einheitliches Default Encoding verlassen (z. B. Windows/DE: Cp1252, Apple: UTF-8, Linux: mal so mal so)

    Also besser:

    String xml = org.apache.commons.io.IOUtils.toString(stream, „UTF-8“);

  • Andreas Ebbert-Karroum

    Robert, in den IOUtils aus den Apache Commons gibt es auch eine Methode toInputStream, die genau das macht — auch mit der von Carsten sinnvoll vorgeschlagenen Ergänzung das encoding mitzugeben:

    public static InputStream toInputStream(String input, String encoding)

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.