it-swarm.com.de

Wie verwandle ich einen String in einen InputStreamReader in Java?

Wie kann ich einen String Wert in einen InputStreamReader umwandeln?

273
Yossale

ByteArrayInputStream macht auch den Trick:

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
322
Guido

Ich habe auch die Klasse Apache commons IOUtils gefunden, also:

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
61
Yossale

Muss es speziell ein InputStreamReader sein? Wie wäre es mit StringReader ?

Andernfalls könnten Sie StringBufferInputStream verwenden, dies ist jedoch aufgrund von Problemen mit der Zeichenkonvertierung veraltet (weshalb Sie StringReader bevorzugen sollten).

32
Dan Dyer

Gleiche Frage wie @ Dan - warum nicht StringReader?

Wenn es InputStreamReader sein muss, dann:

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
16
toolkit

Versuchen Sie, a) Reader - Funktionalität aus InputStreamReader herauszuholen, oder b) InputStream - Funktionalität aus InputStreamReader herauszuholen? Du wirst nicht bekommen b). InputStreamReader ist keine InputStream.

Der Zweck von InputStreamReader besteht darin, ein InputStream - eine Quelle von Bytes - zu nehmen und die Bytes in Zeichen in Form eines Reader zu dekodieren. Sie haben Ihre Daten bereits als Zeichen (Ihre ursprüngliche Zeichenfolge). Das Codieren Ihres Strings in Bytes und das Zurückdecodieren der Bytes in Zeichen wäre eine redundante Operation.

Wenn Sie versuchen, eine Reader aus Ihrer Quelle zu ziehen, verwenden Sie StringReader.

Wenn Sie versuchen, eine InputStream zu erhalten (die nur Bytes enthält), verwenden Sie Apache-Commons IOUtils.toInputStream(..), wie in anderen Antworten hier vorgeschlagen.

3
Fai Ng

Sie können versuchen Kakteen :

InputStream stream = new InputStreamOf(str);

Dann, wenn Sie ein Reader brauchen:

Reader reader = new ReaderOf(stream);
2
yegor256