import java.io.*; public class PC { // Pipe by Character copy public static void main(String[] arg) throws IOException, InterruptedException { File inputFile = new File(arg[0]); File outputFile = new File(arg[1]); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; // Create a pipe for the threads to communicate with. PipedWriter pipeOut = new PipedWriter(); PipedReader pipeIn = new PipedReader(pipeOut); // Start up the reader & writer threads. readThread rt = new readThread(in, pipeOut); writeThread wt = new writeThread(pipeIn, out); rt.start(); wt.start(); // Wait for both threads to complete. rt.join(); wt.join(); pipeIn.close(); pipeOut.close(); in.close(); out.close(); } } class readThread extends Thread { private FileReader input; private PipedWriter output; public readThread(FileReader in, PipedWriter out) { input = in; output = out; } public void run() { int c; try { while ((c = input.read()) != -1) output.write(c); } catch (Exception e) {}; } } class writeThread extends Thread { private PipedReader input; private FileWriter output; public writeThread(PipedReader in, FileWriter out) { input = in; output = out; } public void run() { int c; try { while ((c = input.read()) != -1) output.write(c); } catch (Exception e) {}; } }