back to top

Scrivere file di testo con Java

In questo articolo vedremo come scrivere testo all’interno di un file utilizzando Java, cioรจ come gestire, a livello applicativo, i file memorizzandovi all’interno alcuni semplici contenuti testuali.

Premessa: utilizzare semplici file di testo come “database”

Scrivere dati su un file puรฒ risultare utile in molti contesti applicativi. Pensiamo ad esempio a un programma che debba registrare delle attivitร  all’interno di un file di LOG, oppure a un software che debba gestire elaborazioni relative all’anagrafica dei clienti di una ditta. Certamente รจ importante che, dopo ogni esecuzione, le modifiche vengano salvate all’interno di un database oppure, quando ciรฒ non รจ possibile o opportuno, all’interno di un semplice file testuale.

Pubblicitร 

Un semplice file di testo, infatti, puรฒ rappresentare uno strumento utile per l’archiviazione di dati, una sorta di contenitore in cui รจ possibile reperire ed immagazzinare le informazioni elaborate dai nostri programmi, piรน o meno come facciamo con un comune database.

Scrivere un file con Java

Ma come รจ possibile scrivere su file? Prendiamo in esame il caso di programmi scritti in linguaggio Java, uno tra i linguaggi di programmazione piรน diffusi al mondo. Proprio a sottolineare l’importanza di questo tipo di operazioni, Java mette a disposizione alcune classi di libreria (ovvero “pre-programmate”, a disposizione quindi di ogni programmatore) dedicate in modo specifico alla scrittura su file (e, in modo complementare, alla lettura da file).

Si intende per classe un insieme di dati (che chiamiamo dati membro) e di funzioni utili all’elaborazione e alla gestione dei dati stessi (che vengono chiamate invece metodi della classe).

La classe ProvaScritturaSuFile

Nell’esempio di programma che stiamo per realizzare programmeremo autonomamente una classe di nome ProvaScritturaSuFile, che sfrutterร  al suo interno le classi di libreria FileOutputStream e PrintStream.

La classe FileOutputStream ci servirร  per creare un canale di comunicazione tra il nostro programma e il file su cui desideriamo scrivere. Ci serviremo invece della classe PrintStream per effettuare le operazioni di scrittura sul file stesso. Entrambe le classi fanno parte della libreria java.io, quindi รจ necessario segnalare che ci stiamo servendo di tale libreria. Otteniamo tale risultato in questo modo, servendoci della keyword (o parola-chiave) import:

import java.io.*;

Prendiamo a questo punto in esame un semplice esempio di programma Java che realizzi l’operazione di scrittura su file.

import java.io.*;
class ProvaScritturaSuFile {
  public static void main (String args[]) {    
      try {
          FileOutputStream prova = new FileOutputStream("prova.txt");
          PrintStream scrivi = new PrintStream(prova);
          for (int i = 0; i < 10; i++) {
              scrivi.println("Test");
          }
      } catch (IOException e) {
          System.out.println("Errore: " + e);
          System.exit(1);
      }
  }
}

Come possiamo vedere, definiamo un metodo main, che viene richiamato automaticamente all’atto dell’esecuzione del programma. Tale metodo, per prima cosa, crea tramite la keyword (parola-chiave) new un nuovo oggetto di tipo FileOutputStream di nome prova, ovvero una realizzazione concreta del modello astratto rappresentato proprio dalla classe FileOutputStream. Un insieme di dati e di metodi cioรจ non generico ma specifico, che fa riferimento ad un particolare file. Viene fornito infatti un parametro (“prova.txt”), che identifica proprio il nome del file su cui si desidera scrivere.

Se non specificato diversamente, il file viene cercato nella directory in cui รจ presente il file .java che rappresenta il programma. Se il file prova.txt non esiste, viene creato un file vuoto di nome prova.txt.

A questo punto generiamo un oggetto di tipo PrintStream di nome scrivi, a cui viene passato come parametro l’oggetto prova appena creato. Dopo aver individuato il file su cui scrivere con la creazione dell’oggetto prova, effettuiamo cosรฌ il collegamento logico tra il file e l’operazione di scrittura, generando l’oggetto scrivi.

Non resta che testare la possibilitร  di interagire con il file, ad esempio con un semplice ciclo for che porti a scrivere 10 volte “Test” sul file prova.txt, andando a capo ciascuna volta (il che viene ottenuto tramite il metodo println della classe PrintStream, con l’istruzione scrivi.println(“Test”)).

Un’ultima precisazione riguarda l’uso di try e catch. Le istruzioni contenute nel programma possono generare un particolare tipo di problema detto IOException, o “eccezione di input/output”. Tale problema viene riscontrato nel caso si verifichi l’interruzione o il fallimento di un’operazione di input o, come in questo caso, di output (la scrittura su file).

L’inserimento di tali istruzioni in un blocco contraddistinto dalla keyword try consente di definire successivamente un blocco identificato dalla parola catch per gestire l’errore. In questo caso, per semplicitร , in caso si rilevi questo tipo di problema decidiamo di stamparne la causa (System.out.println(“Errore: ” + e)) e di uscire dal programma (System.exit(1)).

Verifichiamo il corretto funzionamento del programma visualizzando, dopo l’esecuzione dello stesso, il contenuto del file prova.txt.

Conclusioni

In conclusione, abbiamo visto come scrivere file di testo con Java sia unโ€™operazione fondamentale in molti contesti applicativi. Grazie all’utilizzo delle classi FileOutputStream e PrintStream, possiamo facilmente interagire con file di testo, permettendo di archiviare e gestire dati in modo semplice. In scenari piรน complessi, รจ possibile integrare queste operazioni con database o sistemi di archiviazione piรน sofisticati.

Altri contenuti interessanti

Pubblicitร 

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ร