2009-07-30 4 views
0

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

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

+0

Если вы просто хотите знать, что делает контроллер, создайте его с помощью «нового контроллера (in, System.out)», и он будет записывать на консоль (стандартный выход) –

ответ

8

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

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

// ... 

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

// ... 

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

// use in to read the data 
0

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

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

0

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

Example.

+0

Эй, вы не есть ли какая-нибудь рабочая ссылка на этот пример, не так ли? – DragonGamer

Смежные вопросы