Wie konvertiere ich einen String in einen InputStream in Java?


Antworten:


1410

So was:

InputStream stream = new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

Beachten Sie, dass dies voraussetzt, dass Sie einen InputStream möchten, der ein Bytestrom ist, der Ihre ursprüngliche Zeichenfolge darstellt, die als UTF-8 codiert ist .

Für Java - Versionen von weniger als 7, ersetzen StandardCharsets.UTF_8mit "UTF-8".


1
Geht dieser Zeichensatz nicht verloren, wenn: String -> Bytes -> ByteArrayInputStream? Wenn Sie dies beispielsweise mit "ü" versuchen, haben die Bytes den richtigen Buchstaben, aber der ByteArrayInputStream hat die richtige Konvertierung verloren. Oder liege ich falsch?
— Jonathan Ramos

20
StandardCharsets erfordert Mindest-API-Level 19.
— Nantoka

3
@ JonathanRamos Es liegt nicht am Stream, die Konvertierung durchzuführen. Es liegt an allem, was die Bytes wieder in Strings decodiert.
— Cruncher

26
@Nantoka Anstelle von StandardCharsets.UTF_8 können Sie Charset.forName ("UTF-8") für jede API-Ebene verwenden.
— PJ_Finnegan

seine Arbeit nur ich füge String hinzu newStr = URLDecoder.decode (URLEncoder.encode (Antwort, "iso8859-1"), "UTF-8"); für (utf8)
— sirmagid

275

Ich finde, dass die Verwendung von Apache Commons IO mein Leben viel einfacher macht.

String source = "This is the source of my input stream";
InputStream in = org.apache.commons.io.IOUtils.toInputStream(source, "UTF-8");

Möglicherweise bietet die Bibliothek auch viele andere Verknüpfungen zu häufig ausgeführten Aufgaben, die Sie möglicherweise in Ihrem Projekt verwenden können.


5
Sie verwendeten neuen ByteArrayInputStream (exampleString.getBytes ("UTF-8")). Daher wird die Verwendung von InputStream optimiert. Stream = new ByteArrayInputStream (exampleString.getBytes ("UTF-8"));
— Pankaj Kumar

9
@PankajKumar: Javas JIT-Compiler ist mehr als in der Lage, dies zu integrieren.
— Andrew White

8
Die Verwendung einer Methode, die keine Codierung angibt, ist eine schreckliche Idee ...
— b1nary.atr0phy

2
@ b1naryatr0phy: Apache Commons enthält eine andere Form dieser Methode, bei der die Codierung als zweiter Parameter verwendet wird (was zu Recht vorzuziehen ist): InputStream in = IOUtils.toInputStream (Quelle "UTF-8");
— Cuga

8
Sie können StandardCharsets.UTF_8Definition anstelle von einfachem Text verwenden.
— Douglaslas

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.