Java: Wie kann ich von Print lesen?
Frage
Ich versuche (anhänge eingehende Daten in ein lokales String) zu lesen von einer PrintStram im folgenden Code-Block:
System.out.println("Starting Login Test Cases...");
out = new PrintStream(new ByteArrayOutputStream());
command_feeder = new PipedWriter();
PipedReader in = new PipedReader(command_feeder);
main_controller = new Controller(in, out);
for(int i = 0; i < cases.length; i++)
{
command_feeder.write(cases[i]);
}
main_controller werden einige Saiten auf seinen aus (Printstream) schreiben, wie kann ich dann von diesem Print lesen vorausgesetzt, ich kann jeden Code in Controller-Klasse nicht ändern? Vielen Dank im Voraus.
Lösung
Vereinfacht gesagt: Sie können nicht. Eine Print ist für Ausgabe , um Daten zu lesen, benötigen Sie ein Inputstream (oder eine Unterklasse).
Sie haben bereits eine ByteArrayOutputStream. Am einfachsten zu tun ist:
// ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);
// ...
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
// use in to read the data
Andere Tipps
Wenn Sie einen Verweis auf den zugrunde liegenden Byte-Array-Ausgangsstrom zu halten, können Sie rufen Sie toString (String-Codierung) darauf oder toByteArray () .
Ich vermute, dass Sie die ehemalige wollen, und Sie müssen die Codierung definieren können, wie die Strings geschrieben wurden
(Sie unter Verwendung der Standard-Kodierung Variante der Lage sein, wegzukommen kann)Da kann man den Controller nicht ändern, ein Verfahren zur Steuerung starten und aus dem Prozess der Ausgabe lesen.
Beispiel .