package javacodebook.io.fileinfo;

import java.io.*;

/**
 *  Mit Hilfe der Klasse File können viele Informationen über eine Datei gewonnen werden.
 */
public class FileInfo {

    public static void main(String[] args) {
        if(args.length < 1)
            printUsage();

        String fileName = args[0];
        //Ein Fileobjekt erzeugen, dass alle Informationen liefert
        File f = new File(fileName);
        //Überprüfen, ob die Datei existiert
        if(!f.exists()) {
            System.out.println("Datei existiert nicht");
            System.exit(0);
        }
        //Absoluten Pfad ausgeben
        System.out.println(f.getAbsolutePath());

        //Lese- und Schreibrechte prüfen
        if(f.canRead())
            System.out.println("Datei kann gelesen werden");
        else
            System.out.println("Keine Leserechte");
        if(f.canWrite())
            System.out.println("Datei kann geschrieben werden");
        else
            System.out.println("Keine Schreibrechte");

        //Dateilänge in MB, KB oder Bytes ausgeben
        if(f.length()/ (1024*1024) > 1)
            System.out.println("Datei ist " + f.length()/(1024*1024) + "MB lang");
        else if(f.length()/ (1024) > 1)
            System.out.println("Datei ist " + f.length()/(1024) + "KB lang");
        else
            System.out.println("Datei ist " + f.length() + "Bytes lang");

        //Wann wurde die Datei zuletzt geändert?
        java.util.Date lastMod = new java.util.Date(f.lastModified());
        System.out.println("Datei wurde zuletzt modifiziert am: " + lastMod.toString());

        //Handelt es sich um eine Datei oder um ein Verzeichnis?
        if(f.isFile())
            System.out.println(f.getName() + " ist eine Datei");
        else if(f.isDirectory())
            System.out.println(f.getName() + " ist ein Verzeichnis");
        //Das übergeordnete Verzeichnis ausgeben
        System.out.println("Die Datei liegt im Verzeichnis " + f.getParent());
        //Ist es eine versteckte Datei?
        if(f.isHidden())
            System.out.println("Datei ist versteckt");

    }

    private static void printUsage() {
        System.out.println("Aufruf: java javacodebook.io.fileinfo.FileInfo Dateiname");
        System.exit(0);
    }
}
