import java.io.*;

public class CopyFileGoodExceptions{ 
    
    public static void main(String[] args) {
        
        //    programma che copia il file "inp.txt" nel file "out.txt"
        //    esempio di buona gestione delle eccezioni
        
        String inputFileName = "./inp.txt";
        String outFileName   = "./out.txt";

        try {
            BufferedReader in = 
                new BufferedReader(new FileReader(inputFileName));

            PrintWriter out = 
                new PrintWriter(new BufferedWriter(new FileWriter(outFileName)));
            
            String line = in.readLine();
            while(line!=null){
                out.println(line);
                line = in.readLine();
            }

            // se viene lanciata un'eccezione i file non vengono
            // chiusi (in particolare si perde tutto quello che
            // e' stato scritto sul file di output fino a quel momento)            
            in.close();
            out.close();

        } catch(FileNotFoundException e) {
            System.out.println(inputFileName+" FileNotFound");
        } catch(IOException e) {
            System.out.println(" IOException  "+e);
        }
            
        System.out.println(" Fine Esecuzione  ");
    }
}