簡體   English   中英

Java:如何閱讀PrintStream?

[英]Java: How do I read from PrintStream?

我正在嘗試從以下代碼塊中的PrintStram讀取(將傳入數據追加到本地String中):

    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將向其out(PrintStream)中寫入一些字符串,然后假設我無法更改Controller類中的任何代碼,如何從此PrintStream中讀取? 提前致謝。

簡單地說:您不能。 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()

我懷疑您想要前者,並且需要指定編碼以匹配字符串的寫入方式(使用默認的編碼變體可能可以逃脫)

由於無法更改控制器,因此請為控制器啟動一個進程並從該進程的輸出中讀取。

例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM