import java.io.*;

/******************************************************************************
 * Read from a file and write to a file using char (16bit) I/O
 *    
 * Program copies entire input file to output file.  
 *
 * If input  file does not exist --> FileNotFounDException
 * If output file does not exist, it creates one
 *
 *****************************************************************************/

public class IOfile2
{
    public static void main(String[] args)
    {
        String input_file  = "../data/temp.txt";                           //relative path 
        String output_file = "../data/temp2.txt"; 

//      String input_file  = "/home/sultans/web/java/demo/8inpout/data/temp.txt"; 
//      String output_file = "/home/sultans/web/java/demo/8inpout/data/temp2.txt"; 

        if (args.length > 0) input_file  = args[0];                     //if arg0, take it instead
        if (args.length > 1) output_file = args[1];                     //if arg1, take it instead

        try 
        {

//--    either:
//          File in            = new File(input_file);                  //create a file handle
//          File out           = new File(output_file);                 //create a file handle
//          FileReader infile  = new FileReader(in);                    //open infile
//          FileWriter outfile = new FileWriter(out, true);             //open outfile as append

//--    or:
            FileReader infile  = new FileReader(input_file);            //open infile
            FileWriter outfile = new FileWriter(output_file);           //open outfile
// or       FileWriter outfile = new FileWriter(output_file, true);     //open outfile as append


            BufferedReader inBuffer  = new BufferedReader(infile);      //buffer the input
            PrintWriter    outBuffer = new PrintWriter(outfile);        //buffer the output

            while(true)
            {
                String input = inBuffer.readLine();     //read a line

                if (input == null)                      //end-of-file?
                    break;

                outBuffer.println(input);               //write the line
            }
                    
            infile.close();                     
            outfile.close();

            System.out.println("Copy Successful");
        }
        catch (FileNotFoundException e)
        {
            System.out.println(e);                      //print exception message
            e.printStackTrace(System.err);              //print pgm trace to error output 
        }
        catch (IOException e)
        {
            System.out.println(e);
            e.printStackTrace(System.err);              //print pgm trace to error output 
        }           
    }
}