// CopyTextFileC.java -- copy a text file char-by-char

import java.io.Reader;
import java.io.FileReader;
import java.io.Writer;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.FileNotFoundException;

public class CopyTextFileC { 

   public static void main (final String[] args) {

      if (args.length < 2) {     
         System.err.println ("Usage: java CopyTextFile <src> <dest>");
      } else {
         try {
            main (args[0], args[1]);
         } catch (final IOException ex) {
            ex.printStackTrace();
         }
      }
   }

   public static void main (final String file1, final String file2) throws IOException {
      Reader reader = null;
      Writer writer = null;
      try {
         reader = new FileReader  (file1);
         writer = new PrintWriter (file2);
         main (reader, writer);
      } catch (final FileNotFoundException ex) {
         ex.printStackTrace();
      } catch (final IOException ex) {
         ex.printStackTrace();
      } finally {
         if (reader!=null) reader.close();
         if (writer!=null) writer.close();
      }
   }

   public static void main (final Reader reader, final Writer writer) throws IOException {
      // Read input stream line by line
      while (true) {
         final int ch = reader.read(); // get next char
         if (ch==-1) break;            // exit when end-of-file
         writer.write (ch);            // write char
      }
   } 
}