All pastes #46186 Raw Edit

Mine

public text v1 · immutable
#46186 ·published 2006-03-19 01:29 UTC
rendered paste body
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Random;

public class NativeLauncher {

	public static void main(String[] args) {

		if(args.length != 4){
			System.out.println("Error : Wrong number of inputs");
			return;
		}

		System.out.println("Arguements are...");

		int len = ((Integer)args.length).toString().length();
		String format = "%0" + len + "d / %0" + len + "d";
		for(int i = 0 ; i < args.length ; i++){
			System.out.printf(format + " : %s\n",i,args.length - 1,args[i]);
		}

		execute(args[0],args[1],args[2],args[3]);

	}

	static void execute(String program, String inputFile, String outputFile, String errorFile){

		ProcessBuilder pb = new ProcessBuilder(program);
		Process p;
		try{
			p = pb.start();
			p.getOutputStream();
			BufferedReader fin    = new BufferedReader(new FileReader(inputFile));
			BufferedWriter fout   = new BufferedWriter(new FileWriter(outputFile));
			BufferedWriter ferror = new BufferedWriter(new FileWriter(errorFile));
			BufferedReader pout   = new BufferedReader(new InputStreamReader (p.getInputStream ()));
			BufferedReader perror = new BufferedReader(new InputStreamReader (p.getErrorStream ()));
			BufferedWriter pin    = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

			System.out.println("DIRECTORY : " + System.getProperty("user.dir"));

			new IOMapper(fin,pin).start();
			new IOMapper(pout,fout).start();
			new IOMapper(perror,ferror).start();

			p.waitFor();
		}catch (Exception ex){
			ex.printStackTrace();
		};
	}
}

class IOMapper extends Thread{
	private BufferedReader br;
	private BufferedWriter bw;
	public IOMapper(BufferedReader br, BufferedWriter bw){
		this.br = br;
		this.bw = bw;
	}

	public void run(){
		int i;
		try{
			while((i = br.read()) != -1){
				bw.write(i);
				//System.out.print((char)i);
				//sleep(Math.abs(new Random().nextInt() % 10));
			}
			bw.close();	// close() has an implicit flush
		}catch (Exception ex){
			ex.printStackTrace();
		};
	}
}