Ich habe eine Funktion, die ein Objekt eines bestimmten Typs und ein PrintStream
zu druckendes Objekt verwendet und eine Darstellung dieses Objekts ausgibt. Wie kann ich die Ausgabe dieser Funktion in einem String erfassen? Insbesondere möchte ich es wie in einer toString
Methode verwenden.
java
string
printstream
Nick Heiner
quelle
quelle
PrintStream ps = new PrintStream(baos,true,"utf-8");
, um Zeichensatz-Chaos zu vermeidennew String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
seit 1.7 verfügbar , es wirft nichtByteArrayOutputStream.close()
" hat keine Auswirkung ", da außer dem Backing-Array, das vom Garbage Collector behandelt wird, keine Ressourcen frei sind.ByteArrayOutputStream
hattoString(String charsetName)
, aber nur String-Argument akzeptieren. Beachten Sie auch, dass ByteArrayOutputStream synchronisiert ist , was wahrscheinlich nicht wünschenswert istSie können einen PrintStream mit einem an den Konstruktor übergebenen ByteArrayOutputStream erstellen, mit dem Sie später den in den PrintStream geschriebenen Text abrufen können.
quelle
Diese Antwort ist eine Vereinheitlichung früherer Antworten und funktioniert mit Java 1.7 und höher. Außerdem habe ich Code hinzugefügt, um die Streams zu schließen.
quelle
Vielleicht hilft Ihnen diese Frage: Holen Sie sich einen OutputStream in einen String
Unterklasse OutputStream und verpacken Sie es in PrintStream
quelle
Definieren und initialisieren Sie eine Scannervariable mit dem Namen inSS, die mithilfe der String-Variablen myStrLine einen Eingabe-String-Stream erstellt.
Antwort: Scanner inSS = neuer Scanner (myStrLine);
quelle