Wie kann ich einen String
Wert in einen Wert umwandeln InputStreamReader
?
281
ByteArrayInputStream macht auch den Trick:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Dann zum Leser konvertieren:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: Seit: JDK1.0 Es gibt nicht den geringsten Grund anzunehmen, dass diese Klasse "seit Java 1.4" ist. Diese falsche Versionsnummer ist besonders seltsam, als Java 1.4 eingeführt wurde,NIO
und es macht wenig Sinn, eine API und ihren konzeptionellen Nachfolger in derselben Version einzuführen.Ich habe auch die Apache Commons-
IOUtils
Klasse gefunden, also:quelle
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
wäre verlustfrei.String
in einbyte[]
Array, um die Bytes dann wieder inchar
s umzuwandeln ...Muss es sich speziell um einen InputStreamReader handeln? Wie wäre es mit StringReader ?
Andernfalls könnten Sie StringBufferInputStream verwenden , der jedoch aufgrund von Problemen bei der Zeichenkonvertierung veraltet ist (weshalb Sie StringReader bevorzugen sollten).
quelle
Gleiche Frage wie @Dan - warum nicht StringReader?
Wenn es InputStreamReader sein muss, dann:
quelle
byte[] bytes = charset.getBytes();
Versuchen Sie, a)
Reader
Funktionalität ausInputStreamReader
oder b)InputStream
Funktionalität herauszuholenInputStreamReader
? Sie werden nicht b) bekommen.InputStreamReader
ist keinInputStream
.Der Zweck von
InputStreamReader
ist es, eineInputStream
- eine Quelle von Bytes - zu nehmen und die Bytes in Form von a in Zeichen zu dekodierenReader
. Sie haben Ihre Daten bereits als Zeichen (Ihre ursprüngliche Zeichenfolge). Das Codieren Ihres Strings in Bytes und das Zurückcodieren der Bytes in Zeichen wäre eine redundante Operation.Wenn Sie versuchen,
Reader
aus Ihrer Quelle herauszukommen, verwenden SieStringReader
.Wenn Sie versuchen, ein
InputStream
(das Ihnen nur Bytes gibt) zu erhalten, verwenden Sie Apache Commons,IOUtils.toInputStream(..)
wie in anderen Antworten hier vorgeschlagen.quelle
Sie können Kakteen ausprobieren :
Wenn Sie dann Folgendes benötigen
Reader
:quelle