KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > process > StreamAppender


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.process;
5
6 import java.io.BufferedReader JavaDoc;
7 import java.io.BufferedWriter JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.InputStream JavaDoc;
10 import java.io.InputStreamReader JavaDoc;
11 import java.io.OutputStream JavaDoc;
12 import java.io.OutputStreamWriter JavaDoc;
13 import java.io.PrintWriter JavaDoc;
14
15 public class StreamAppender {
16
17   private PrintWriter JavaDoc output;
18   private Thread JavaDoc outWriter;
19   private Thread JavaDoc errWriter;
20
21   public StreamAppender(OutputStream JavaDoc output) {
22     this.output = new PrintWriter JavaDoc(new BufferedWriter JavaDoc(new OutputStreamWriter JavaDoc(output)));
23   }
24
25   public void writeInput(final InputStream JavaDoc err, final InputStream JavaDoc out) {
26     errWriter = new Thread JavaDoc() {
27       BufferedReader JavaDoc reader = new BufferedReader JavaDoc(new InputStreamReader JavaDoc(err));
28
29       public void run() {
30         try {
31           String JavaDoc line;
32           while ((line = reader.readLine()) != null) {
33             output.println(line);
34           }
35         } catch (IOException JavaDoc e) {
36           e.printStackTrace();
37         } finally {
38           output.flush();
39         }
40       }
41     };
42
43     outWriter = new Thread JavaDoc() {
44       BufferedReader JavaDoc reader = new BufferedReader JavaDoc(new InputStreamReader JavaDoc(out));
45
46       public void run() {
47         try {
48           String JavaDoc line;
49           while ((line = reader.readLine()) != null) {
50             output.println(line);
51           }
52         } catch (IOException JavaDoc e) {
53           e.printStackTrace();
54         } finally {
55           output.flush();
56         }
57       }
58     };
59
60     errWriter.setDaemon(true);
61     outWriter.setDaemon(true);
62
63     errWriter.start();
64     outWriter.start();
65   }
66
67   public void finish() throws Exception JavaDoc {
68     outWriter.join();
69     errWriter.join();
70   }
71
72 }
73
Popular Tags