Java ci mette a disposizione numerosi strumenti, classi e funzioni, per la manipolazione dei file; tra di essi abbiamo la classe omonima, File(), che produce una rappresentazione astratta di un documento e del percorso che porta ad esso. "Rappresentazione astratta" non è di certo una definizione di immediata comprensione per tutti, ma il concetto è più semplice di quanto non si possa credere: in pratica, grazie alla classe File() un file partecipa al flusso di dati in un’applicazione esattamente come qualsiasi altra informazione o dato.
In questo tutorial vedremo come permettere ad un’applicazione Java di leggere il contenuto di un file, ad esempio una stringa di testo, il tutto sarà possibile semplicemente passando al programmino il percorso (path) al documento che dovrà essere letto.
Ma passiamo subito al codice, per altro abbastanza semplice, della nostra applicazione; occhio ai commenti nel listato, eventiali approfondimenti verranno proposti subito dopo il codice:
import java.io.*;
import java.net.*;
// definiamo la classe principale
public class InfoFile
{
public static void main(String[] args)
{
// definiamo il percorso al file da leggere
File doc=new File("C:/doc.txt");
URL path=null;
// creaiamo un blocco try-catch per intercettare le eccezioni
try
{
// mostriamo il percorso al file
path=doc.toURL();
System.out.println("Il doc si trova nel percorso" + path);
/ /mostriamo il nome del file
doc=new File(path.getFile());
System.out.println("Nome del file " + doc);
int i;
// apriamo lo stream di input...
InputStream is=path.openStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
// ...e avviamo la lettura del file con un ciclo
do
{
i=br.read();
System.out.println((char)i);
}
while (i!=-1);
is.close();
}
// intercettiamo eventuali eccezioni
catch (MalformedURLException e)
{
System.out.println("Attenzione:" + e);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
Come avrete avuto modo di notare, il codice proposto non presenta particolari punti di difficoltà: la classe pubblica alla base dell’applicazione si chiama InfoFile(), è l’unica creata in sede di sviluppo e non nativa di Java e dà anche il nome al nostro file sorgente "InfoFile.java".
La classe File() viene richiamata immediatamente, ad essa abbiamo passato come parametro il percorso al file che deve essere processato in modo che il suo contenuti passi allo stream di dati.
Incontriamo poi la classe Url(), in Java questa classe funge da rappresentazione di un Uniform Resource Locator che può essere un qualsiasi punto in cui è reperibile una risorsa; grazie ad essa l’applicazione localizza il file da passare in lettura.
Infine, troviamo la classe BufferedReader() per la lettura del flusso di dati, questa classe legge un stringa di testo sulla base di uno stream di input formato da caratteri; attraverso ciò che viene letto dalla classe, l’applicazione proporrà in otuput tutti i caratteri che sono passati per il flusso di dati, cioè il contenuto del file.