Gestione di File in Java

I file, conosciuti anche con il nome di archivi, sono entità che immagazzinano l’informazione in maniera permanente, anche dopo aver spento il computer. In Java, per lavorare con i file, la prima cosa da fare è creare degli oggetti che siano ad essi collegati direttamente, una volta stabilito questo legame, ogni operazione di IO ( Input – Output ) che faremo sull’oggetto si ripercuoterà sul disco. Il JDK ci mette a disposizione delle classi preconfezionate che ci consentono di lavorare con gli archivi in maniera semplice e veloce: esse sono presenti nel package java.io e quindi ogni programma che scriveremo dovrà importarle prima di utilizzarle. Per costruire il legame di cui parlavamo precedentemente è sufficiente creare un oggetto di tipo File ed inserire nel costruttore la path in formato stringa di dove andare a scrivere ( output ) o leggere ( input ). Vediamo un esempio chiarificatore per renderci conto in maniera pratica di come si fa a creare e scrivere un file in Java:

// file Main.java

package corso;

import java.io.*;

public class Main
{
   public static void main(String[] args)
   {
       File f = new File("/home/giampy/java/test.txt");
       try
       {
          RandomAccessFile ar = new RandomAccessFile(f, "rw");
          ar.writeChars("Questo file è solo un esempio per
               i ragazzi del corso!");
          ar.close();
       }
       catch (IOException e) {}

       System.out.println("Abbiamo scritto il file test.txt
             di " + f.length() + " bytes");
    }
}

La prima cosa insolita che possiamo notare è la presenza di una nuova classe RandomAccessFile che ha lo scopo di un contenitore del file e ci consentirà di effettuare quelle operazioni ad alto livello che altrimenti sarebbero state impossibili con i metodi previsti dalla classe File. La classe RandomAccessFile ci permette di aprire un archivio in modalità lettura – scrittura e spostarsi direttamente in una posizione desiderata, di saltare un certo numero di posizioni, di leggere un carattere alla volta oppure un’intera linea. Un RandomAccessFile è infatti direttamente collegato al concetto di puntatore al prossimo elemento, all’apertura si riferisce al primo carattere del file. Potete anche notare come abbiamo dovuto inserire questa classe all’interno di un blocco trycatch per gestire le eventuali eccezioni. Vediamo alcuni metodi messi a disposizione dalla classe:

  • public void close() – Chiude il file e rilascia le risorse ad esso associate.
  • public long getFilePointer() – Restituisce la posizione corrente del puntatore.
  • public long length() – Restituisce la lunghezza del file.
  • public final byte ReadByte() – Legge un byte dal file, a partire dalla posizione indicata dal puntatore.
  • public final String readLine() – Legge una linea di testo dal file.
  • public void seek(long n) – Sposta il puntatore alla posizione n.
  • public final void WriteBytes(String s) – Scrive sul file la strings come sequenza di byte a partire dalla posizione corrente del puntatore.

Alcuni metodi della classe File sono:

  • public boolean canRead() – Restituisce vero nel caso il file sia leggibile.
  • public boolean canWrite() – Restituisce vero nel caso il file sia scrivibile.
  • public boolean delete() – Restituisce vero se il file è stato effettivamente cancellato.
  • public boolean exists() – Restituisce vero se il file esiste.
  • public String getName() – Restituisce il nome del file.
  • public String getCanonicalPath() – Restituisce il percorso dove risiede il file.
  • public boolean IsDirectory() – Restituisce vero nel caso in cui il file sia una directory.
  • public long length() – Restituisce la linghezza del file in byte.
  • public String[] list() – Restituisce l’elenco dei file presenti nella directory, sotto forma di array di stringhe.
  • public String[] list(FilenameFilter filter) – Come il procedimento precedente, ma i file sono filtrati.

Per la lista completa delle funzioni potete vedere la documentazione del JDK oppure seguire le indicazioni dei metodi che appaiono lavorando con le classi nei moderni strumenti di sviluppo per Java come NetBeans.

// file Main.java

package corso;

import java.io.*;

public class Main
{
    public static void main(String[] args)
    {
        File f = new File("/home/giampy/java/test.txt");
        String s = "";

        try
        {
             RandomAccessFile ar = new RandomAccessFile(f, "r");
             s = ar.readLine();
             ar.close();
         }
        catch (IOException e) {}

        f.delete();

        System.out.println(s);
    }
}

Abbiamo fatto esempi molto semplici, per ora occorre che capiate le basi della programmazione in Java, per le cose complicate arriverà il momento giusto, non preoccupatevi!

<< Lezione Precedente – Inizio CorsoLezione Successiva >>

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Java. Contrassegna il permalink.