/***************************************************************/
/* Prof. Dr. Carsten Vogt                                      */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                      */
/* http://www.nt.fh-koeln.de/vogt                              */
/*                                                             */
/* Das Programm zeigt Operationen, mit denen man Dateieigen-   */
/* schaften abfragen und Verzeichnisse manipulieren kann.      */
/***************************************************************/

import java.io.*;

public class Fileops {

 public static void main(String args[]) throws FileNotFoundException, IOException {

  boolean ok;  /* Hilfsvariable */

  /* Anlegen eines Testunterverzeichnisses ... */
  File verzeichnis = new File("testdir");
  verzeichnis.mkdir();  /* macht testdir zu einem Verzeichnis */

  /* ... einer neuen Testdatei dort ... */
  FileOutputStream fileout = new FileOutputStream("testdir\\testfile.txt");
  fileout.close();
  
  /* ... und eines zugehoerigen File-Objekts. */
  File datei = new File("testdir\\testfile.txt");

  /* Abfrage von Dateieigenschaften */

  System.out.println();
  System.out.println("Eigenschaften von testfile.txt im Testverzeichnis:");

  System.out.println(" exists(): "+datei.exists());
  System.out.println(" canRead(): "+datei.canRead());
  System.out.println(" canWrite(): "+datei.canWrite());
  System.out.println(" isDirectory(): "+datei.isDirectory());
  System.out.println(" isFile(): "+datei.isFile());
  System.out.println(" lastModified(): "+datei.lastModified()+" (in ms seit 1.1.1970)");
  System.out.println(" length(): "+datei.length()+" Bytes");
  System.out.println(" getPath(): "+datei.getPath());

  /* Auflisten eines Verzeichnisses */

  System.out.println();
  System.out.println("Inhalt des Testverzeichnisses:");
  String[] verzeichnisInhalt = verzeichnis.list();
  for (int i=0;i<verzeichnisInhalt.length;i++)
   System.out.println(" "+verzeichnisInhalt[i]);

  /* Umbenennen einer Datei */

  System.out.println();
  System.out.println("Umbenennung von testfile.txt in tf.txt");
  ok = datei.renameTo(new File("testdir\\tf.txt"));
  if (!ok) System.out.println(" !!! Fehler bei Umbenennung");

  System.out.println();
  System.out.println("Inhalt des Testverzeichnisses:");
  verzeichnisInhalt = verzeichnis.list();
  for (int i=0;i<verzeichnisInhalt.length;i++)
   System.out.println(" "+verzeichnisInhalt[i]);
  
  /* Loeschen einer Datei */

  System.out.println();
  System.out.println("Loeschung von tf.txt");
  datei = new File("testdir\\tf.txt");
   /* Ohne diesen erneuten Konstruktoraufruf klappt das nachfolgende Loeschen nicht */
  ok = datei.delete();
  if (!ok) System.out.println(" !!! Fehler beim Loeschen");

  System.out.println();
  System.out.println("Inhalt des Testverzeichnisses:");
  verzeichnisInhalt = verzeichnis.list();
  for (int i=0;i<verzeichnisInhalt.length;i++)
   System.out.println(" "+verzeichnisInhalt[i]);
  
  /* Loeschen eines Verzeichnisses */

  System.out.println();
  System.out.println("Loeschung des Testverzeichnisses");
  ok = verzeichnis.delete();
  if (!ok) System.out.println(" !!! Fehler beim Loeschen");

 }

}

