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.

War es hilfreich?

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 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top