back to top

Leggere un file di testo con Java

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.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Java: cos’è e a cosa serve l’operatore modulo (%)

In Java, l'operatore modulo è rappresentato dal simbolo "%"...

Arrotondare un numero con Java

Quando si lavora con i numeri all'interno di un...

Java: cos’è l’errore NullPointerException e come risolverlo

RuntimeException รจ una superclasse di Java che ricomprende tutte...

Stringhe in Java

La gestione delle stringhe assume un ruolo fondamentale in...

Leggere un file di testo in java

In java ci sono diverse modalità per leggere dati...

Il costrutto foreach in java

Il foreach è un particolare costrutto (disponibile a partire...
Pubblicitร