Java: Как мне читать из PrintStream? - PullRequest
0 голосов
/ 30 июля 2009

Я пытаюсь прочитать (добавить входящие данные в локальную строку) из PrintStram в следующем блоке кода:

    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 будет записывать некоторые строки в свой вывод (PrintStream), тогда как я могу читать из этого PrintStream, если я не могу изменить какой-либо код в классе Controller? Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 30 июля 2009

Проще говоря: вы не можете. PrintStream предназначен для вывода , для чтения данных необходим InputStream (или любой подкласс).

У вас уже есть ByteArrayOutputStream. Проще всего это сделать:

// ...

ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);

// ...

ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());

// use in to read the data
0 голосов
/ 30 июля 2009

Поскольку вы не можете изменить контроллер, запустите процесс для контроллера и прочитайте его результаты.

Пример .

0 голосов
/ 30 июля 2009

Если вы сохраняете ссылку на базовый поток вывода байтового массива, вы можете вызвать toString (String encoding) или toByteArray () .

Я подозреваю, что вы хотите использовать первое, и вам нужно указать кодировку, совпадающую с тем, как записаны строки (возможно, вам удастся избежать использования варианта кодировки по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...