Java: Как мне читать из PrintStream?
Вопрос
Я пытаюсь прочитать (добавить входящие данные в локальную строку) из 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? Заранее спасибо.
Решение
Проще говоря, вы не можете. PrintStream предназначен для вывода , для чтения данных вам необходим InputStream (или любой подкласс).
У вас уже есть ByteArrayOutputStream. Проще всего это сделать:
// ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);
// ...
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
// use in to read the data
Другие советы
Если вы сохраняете ссылку на базовый поток вывода байтового массива, вы можете вызвать toString (String encoding) или toByteArray () . Р>
Я подозреваю, что вы хотите использовать первое, и вам нужно указать кодировку, совпадающую с тем, как были записаны строки (возможно, вам удастся избежать использования варианта кодировки по умолчанию)
Поскольку вы не можете изменить контроллер, запустите процесс для контроллера и прочитайте его результаты.
Пример .