// Beispiel fuer Datei-Ein- und -Ausgabe
// Kopieren einer Datei in eine andere
// Ch. Herzog, 12.12.2006

import java.io.*;
public class FileUtils {
   public static void copyFile (String inputFile, String outputFile) {

   // Es wird versucht, die Eingabedatei zum Lesen zu oeffnen:
    FileReader fReader = null;
    try {
      fReader = new FileReader (inputFile);
    }
    catch (FileNotFoundException e) {
      System.out.println("Fehler: Die Datei " + inputFile +
                         " konnte nicht zum Lesen geoeffnet werden.");
      System.exit(97);
    }

    // Konkatenation von Eingabestroemen:
    BufferedReader bReader = new BufferedReader(fReader);

    // Versuch, die Ausgabedatei zum Schreiben zu oeffnen:
      FileOutputStream fOStream = null;
      try {
         fOStream = new FileOutputStream (outputFile);
      }
      catch (IOException e) {
         System.out.println("Fehler: Die Datei " + outputFile +
                    " konnte nicht zum Schreiben geoeffnet werden.");
         System.exit(98);
      }

    // Konkatenation von Ausgabestroemen:
      PrintWriter pWriter = new PrintWriter (fOStream);      

    // Der Inhalt der Eingabedatei wird zeilenweise in die 
    // Ausgabedatei kopiert:
      try {
         String inputLine;
         do {
                  // Eine Zeile lesen:
	    inputLine = bReader.readLine();
	          // Beim Dateiende wird der null-Pointer geliefert:
	    if (inputLine != null)
                 // Die Zeile schreiben:
	       pWriter.println(inputLine);
         } while (inputLine != null); // Solange kein Dateiende
    // Schliessen der Stroeme: 
         bReader.close();
         pWriter.close();
      }
     catch (IOException e) {
        System.out.println("Fehler:  " + e);
        System.exit(99);
     }
  } // copyFile()
} // class FileUtils


