![](/img/trans.png)
[英]How do I catch a java.io.PrintStream place its output in a JEditorPane?
[英]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.