package org.greenstone.gatherer.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; // http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html?page=2 // This class is used in FormatConversionDialog to properly read from the output and error streams of a Process public class InputStreamGobbler extends Thread { InputStream is = null; StringBuffer outputstr = new StringBuffer(); boolean split_newlines = false; public InputStreamGobbler(InputStream is) { this.is = is; split_newlines = false; } public InputStreamGobbler(InputStream is, boolean split_newlines) { this.is = is; this.split_newlines = split_newlines; } public void run() { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(is, "UTF-8")); String line=null; while ( (line = br.readLine()) != null) { //System.out.println("@@@ GOT LINE: " + line); outputstr.append(line); if(split_newlines) { outputstr.append("\n"); } } } catch (IOException ioe) { ioe.printStackTrace(); } finally { Utility.closeResource(br); } } public String getOutput() { return outputstr.toString(); // implicit toString() call anyway. //return outputstr; } }