package com.digitalpebble.util;
import gate.util.BomStrippingInputStreamReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
/**
* Thread used to store the output ofan external process.
**/
public class StreamReader implements Runnable {
private static final int SIZE = 1024;
private Reader is;
private StringBuffer internalBuffer = new StringBuffer();
public StreamReader(InputStream is) {
this.is = new BomStrippingInputStreamReader(is);
}
// This used to ignore 'charset'.
public StreamReader(InputStream is, String charset) {
try {
this.is = new BomStrippingInputStreamReader(is, charset);
}
catch(UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
public void run() {
final char[] buf = new char[SIZE];
int length;
try {
while((length = is.read(buf)) > 0) {
// get a buffer of characters from this Stream
internalBuffer.append(buf, 0, length);
}
} catch(Exception e) {
// ignore errors
} finally {
try {
is.close();
} catch(IOException e) {
}
}
}
public StringBuffer getBuffer() {
return this.internalBuffer;
}
}