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.

Pubblicità

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.

Altri contenuti interessanti

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...

Vibe Coding: cos’è, come funziona e quali sono i migliori strumenti AI per programmare

Immagina di poter scrivere software senza dover digitare una...

I migliori libri per imparare a programmare in Python

Imparare a programmare in Python è un passo fondamentale...

Il file manifest.json: cos’è e a cosa serve

Il file manifest.json è un componente chiave nelle applicazioni web moderne,...

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

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

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata è un'operazione matematica piuttosto comune (in...

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++....
Pubblicità