/* *************************************************************************
 * Il Java ha anche una classe File, specializzata nel gestire files sulla
 * macchina host (quella su cui viene eseguito il programma), che e' molto
 * meno astratta di FileInputStream/FileOutputStream.
 * Fa riferimento ad un file sul disco, e serve in particolare per il
 * supporto di path e nomi file particolari della macchina specifica.
 * E' possibile anche avere informazioni sugli attributi del file, e le
 * directory sono considerate file listabili.
 * I metodi piu' importanti della classe File sono:
 *
 *
 * canRead()      ; Restituisce true se e' leggibile, altrimenti false
 * 
 * canWrite()     ; Restituisce true se e' scrivibile, altrimenti false
 *
 * equals(Object) ; Confronta il file con un'altro
 *
 * exists()       ; Restituisce true se il file esiste, altrimenti false.
 *
 * getPath()      ; Restituisce il path (solo quello indicato da noi)
 *
 * getAbsolutePath() ; Restituisce il path assoluto (es: c:\javcors\..\..)
 *
 * isDirectory()  ; Ritorna true se esiste ed e' una directory, altr. false.
 *
 * isFile()       ; Ritorna true se esiste ed e' un file, altrim. false.
 *
 * length()       ; Restituisce la lunghezza del file
 *
 * list()         ; Lista i file di una directory. Restituisce un array di
 *                  Stringhe con i nomi.
 *
 * mkdir()        ; Crea una dir e restit. true se ha avuto successo.
 *
 * renameTo(File) ; Rinomina un file e restit. true se ha successo.
 *
 *
 * Per istanziare un File basta passare il nome e/o path al costruttore:
 *
 *   File MioFile1 = new File("Jlez6b.java");
 *   File MioFile2 = new File("c:/marietto/appunti/letterina.txt");
 *
 * I metodi di java.io.File non causano eccezioni IOException, quindi non
 * sono necessari i try-catch. Se un'operazione non ha avuto successo i
 * metodi restituiscono false anziche' true, per informarci.
 * NOTA: I separatori di percorso su Unix sono "/", mentre su ms-dos sono
 * il backslash "\". In questo caso java permette di usare "/" anche su
 * ms-dos.
 * Proviamo qualche metodo di java.io.File, leggendo gli atributi di questo
 * sorgente, Jlez6b.java.
 ************************************************************************* */

import java.io.*;                // Include le funzioni I/O standard di base.


class Jlez6b {            // Da qua inizia la classe Jlez6b

 public static void main(String args[])  // Definiamo il metodo Main.
 {                                       // Inizio del main()

// Gli oggetti File li dichiaro nel main() perche' siano accessibili in
// tutto il suo {blocco}.

    File MioFile1 = new File("Jlez6b.java");  // Il file che mi interessa.

// Come prima cosa controllo se il file esiste.

    if(MioFile1.exists()) {

// Il file esiste, provo a leggere un po' di informazioni sul file.java

      System.out.println("\nInformazioni sul File " + MioFile1 + ":\n");

      String percorso = MioFile1.getPath();        // Prendo il path
      String percorso2 = MioFile1.getAbsolutePath(); // e path assoluto
      System.out.println("Path = " + percorso);    // E lo stampo
      System.out.println("Path assoluto = " + percorso2);    // E lo stampo

      System.out.println("Lunghezza = " + MioFile1.length());

      if(MioFile1.isDirectory()) System.out.println("File di tipo directory.");
        else System.out.println("File normale.");

      if(MioFile1.canRead()) System.out.println("File leggibile.");
        else System.out.println("File non leggibile.");

      if(MioFile1.canWrite()) System.out.println("File scrivibile.");
        else System.out.println("File non scrivibile.");

      System.out.println("Tutte le operazioni sono riuscite.");
    }
    else System.out.println("Il file " + MioFile1 + " non esiste!");

 }               // Fine del metodo principale Main()


}            // Fine della classe Jlez6b

/* *************************************************************************
 * Provate a far leggere altri file o file inesistenti per verificare.
 ************************************************************************* */