129 votes

Comment créer un InputStream à partir d'une chaîne?

Je ne suis pas habitué à travailler avec des flux en Java. Comment créer un InputStream partir d'un String ?

167voto

anubhava Points 172509

Ici, vous allez:

InputStream is = new ByteArrayInputStream( myString.getBytes() );

Mise à jour Pour le multi-octets d'utilisation (grâce à Aaron Waibel'commentaire):

InputStream is = new ByteArrayInputStream(Charset.forName("UTF-16").encode(myString()).array());

Veuillez voir ByteArrayInputStream manuel.

Il est sûr à utiliser un argument jeu de caractères dans la Chaîne#getBytes(charset) méthode ci-dessus.

36voto

WhiteFang34 Points 28652

Vous pouvez faire ceci:

InputStream in = new ByteArrayInputStream(string.getBytes("UTF-8"));

Remarque l' UTF-8 d'encodage. Vous devez spécifier le jeu de caractères que vous souhaitez les octets codés en. Il est courant de choisir UTF-8 si vous n'avez pas spécialement besoin de rien d'autre. Sinon, si vous ne sélectionnez rien, vous aurez l'encodage par défaut qui peuvent varier entre les systèmes. À partir de la JavaDoc:

Le comportement de cette méthode lors de cette chaîne ne peut pas être codée dans le jeu de caractères par défaut est spécifiée. Le CharsetEncoder classe doit être utilisée lorsque plus de contrôle sur le processus d'encodage est nécessaire.

0voto

trashgod Points 136305

Vous voulez peut-être StringReader , "Un flux de caractères dont la source est une chaîne." Il y a un exemple ici .

0voto

vorburger Points 679

Au lieu de CharSet.forName, utiliser com.google.common.base.Charsets à partir de Google's Guava (http://code.google.com/p/guava-libraries/wiki/StringsExplained#Charsets) est légèrement plus agréable:

 InputStream is = new ByteArrayInputStream( myString.getBytes(Charsets.UTF_8) );
 

Le jeu de caractères que vous utilisez dépend entièrement de ce que vous allez faire avec InputStream, bien sûr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X