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);

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.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

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.