Je ne suis pas habitué à travailler avec des flux en Java. Comment créer un InputStream
partir d'un String
?
Réponses
Trop de publicités?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.
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.
Vous voulez peut-être StringReader
, "Un flux de caractères dont la source est une chaîne." Il y a un exemple ici .
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.