rendered paste bodyimport 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(); }; }}