import java.io.*;

/*********************************************************************
 * Read from a file and write to a file using byte (8bit) 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 IOfile1
{
    public static void main(String[] args)
    {
        String input_file  = "../data/temp.txt";					//relative path 
        String output_file = "../data/temp2.txt"; 					//relative path

//      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

        int bytesRead = 0;
        byte[ ] array = new byte[1024];                                         //create a byte array

        try 
        {
            File                 file1     = new File(input_file);              //create a file handle  
            FileInputStream      inFile    = new FileInputStream(file1);        //open file1 for input
            BufferedInputStream  inBuffer  = new BufferedInputStream(inFile);   //buffer the input
            
            File                 file2     = new File(output_file);             //create a file handle  
            FileOutputStream     outFile   = new FileOutputStream(file2);       //open file2 for output
//          FileOutputStream     outFile   = new FileOutputStream(file2,true);  //open file2 in append mode
            BufferedOutputStream outBuffer = new BufferedOutputStream(outFile); //buffer the output

            while(true)                                                 //keeping looping
            {
               bytesRead = inBuffer.read(array);                        //read a line

               if (bytesRead == -1)                                     //end-of-file?
                    break;
                    
//              String input = new String(array, 0, bytesRead);         //convert array into a string
//              System.out.println(input);                              //print the line

                outBuffer.write(array, 0, bytesRead);                   //write out the data
            }

            outBuffer.flush();                                          //flush last buffer
            
            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);
        }           
        finally
        {
        }
    }
}