0
A
回答
2
您需要啓動一個從Process
輸出流中讀取數據並將其打印在System.out
上的線程。
您可以使用這樣的類:
class ProcessOutputStreamPrinter extends Thread {
BufferedReader reader;
public ProcessOutputStreamPrinter(Process p) {
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
}
public void run() {
try {
String line;
while (null != (line = reader.readLine()))
System.out.println("Process output: " + line);
} catch (IOException e) {
// handle somehow
}
}
}
下面是這個類的一些測試代碼:
class Test {
public static void main(String[] args) throws IOException {
// Start external process. (Replace "cat" with whatever you want.)
ProcessBuilder pb = new ProcessBuilder("cat");
Process p = pb.start();
// Start printing it's output to System.out.
new ProcessOutputStreamPrinter(p).start();
// Just for testing:
// Print something ourselves:
System.out.println("My program output: hello");
// Give cat some input (which it will echo as output).
PrintWriter pw = new PrintWriter(new PrintStream(p.getOutputStream()));
pw.println("hello");
pw.flush();
// Close stdin to terminate "cat".
pw.close();
}
}
輸出:
My program output: hello
Process output: hello
0
執行以下操作:
- 通過創建一個內部類從塊由
System.out
- 輸出由
System.out
從外部啓動一個新的線程,並延伸Runnable
- 在
run()
方法編寫代碼 - 輸出代碼主線程的代碼的 區塊。
內部類是啓動新進程(線程)最適當的方法。我所指的塊是run()方法中的代碼。
相關問題
- 1. 自己的輸出流(模擬COUT)
- 2. 如何禁止用戶查看除自己下線以外的其他成員?
- 3. 在Xcode中查看我自己的HeaderDoc
- 4. 製作我自己的API,請查看
- 5. 我可以創建與stdout和stderr不同的自己的輸出流嗎?
- 6. 帶輸入/輸出流的Java進程
- 7. 輸入自己的類輸入流?
- 8. 查找我自己.NET進程的所有子進程/查明給定進程是否屬於我自己的子進程?
- 9. Ruby中的子進程的流輸出
- 10. 以編程方式刪除我自己的應用程序
- 11. SQL:根據查詢輸出打印我自己的消息
- 12. 程序是否可以輸出自己的副本
- 13. 需要在VB6中查找我自己的進程ID
- 14. 如何自動插入外鍵而不必自己查看?
- 15. Android onAnimationEnd刪除查看(自己)不刪除
- 16. 來自lex程序的意外輸出
- 17. 如何從我自己的webapp查詢我自己的web api?
- 18. 查看輸出或AppleScript的
- 19. 亞馬遜MapReduce與我自己的reducer流式傳輸
- 20. 否認ACCES後我自己的看法
- 21. 我的JAR如何以流的形式打開自己?
- 22. 創建我自己的GoPro實時流
- 23. 創建我自己的MJPEG流
- 24. C++ - 實現我自己的流
- 25. 我可以自己出售Android APK嗎?
- 26. 拋出你自己的例外
- 27. Apple允許使用除自己以外的廣告API嗎?
- 28. php腳本輸出自己
- 29. C#創建自己的流程圖
- 30. Python運行輸入輸出流的外部程序
爲什麼* inner * class?第3項和第4項中提到的「塊」*是什麼? – aioobe 2012-04-23 11:09:04
內部類是啓動新進程(線程)最適當的方式。我所指的塊是run()方法中的代碼 – GingerHead 2012-04-23 11:35:10