J'ai une fonction qui prend un objet d'un certain type, et un PrintStream
sur lequel imprimer, et génère une représentation de cet objet. Comment puis-je capturer la sortie de cette fonction dans une chaîne? Plus précisément, je veux l'utiliser comme une toString
méthode.
java
string
printstream
Nick Heiner
la source
la source
PrintStream ps = new PrintStream(baos,true,"utf-8");
pour éviter le chaos de charsetnew String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
disponible depuis la 1.7 , ça ne jette pasByteArrayOutputStream.close()
" n'a aucun effet ", car il n'y a pas de ressources à libérer en plus du tableau de sauvegarde qui sera traité par le ramasse-miettes.ByteArrayOutputStream
atoString(String charsetName)
, mais n'accepte que l'argument String. Notez également que ByteArrayOutputStream est synchronisé , ce qui n'est probablement pas souhaitableVous pouvez construire un PrintStream avec un ByteArrayOutputStream passé dans le constructeur que vous pourrez utiliser ultérieurement pour récupérer le texte écrit dans PrintStream.
la source
Une unification des réponses précédentes, cette réponse fonctionne avec Java 1.7 et après. De plus, j'ai ajouté du code pour fermer les Streams.
la source
Peut-être que cette question pourrait vous aider: Obtenir un OutputStream dans une chaîne
Sous-classe OutputStream et enveloppez-la dans PrintStream
la source
Définissez et initialisez une variable Scanner nommée inSS qui crée un flux de chaîne d'entrée à l'aide de la variable String myStrLine.
Ans: Scanner inSS = nouveau scanner (myStrLine);
la source