domenica 28 marzo 2010

JAVA: scrivere un file di testo

Come scrivere un semplice file di testo in Java.

Il primo passo consiste nell'importare le classi che ci serviranno:
 import java.io.File; 
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.IOException;

Subito dopo è possibile inserire il seguente codice nel metodo in cui vogliamo scrivere il file (al posto del nome del file può, naturalmente, essere utilizzata una variabile di tipo String opportunamente inizializzata):
  File f = new File("output.txt"); 
try {
if(!f.exists()) {
f.createNewFile();
}
FileOutputStream fos = new FileOutputStream(f);
PrintStream ps = new PrintStream(fos);

ps.println( "Prima riga" );
ps.println( "Seconda riga" );
}
catch(FileNotFoundException fnfex) {
//TODO: aggiungere qui gestione eccezione
}
catch(IOException ioex) {
//TODO: aggiungere qui gestione eccezione
}

Con questo codice è possibile scrivere un file di testo in modalità sovrascrittura (il testo precedentemente presente nel file verrà sovrascritto e quindi perso).
L'utilizzo della classe PrintStream permette di scrivere sul file come se si stesse scrivendo sullo standard output (come si fa quando si utilizza System.out.println).

2 commenti:

  1. Se volessi aggiungere del testo, ad un file di testo già pieno?

    RispondiElimina
  2. Innanzitutto, chiedo scusa per il ritardo con cui rispondo, credevo che i commenti sarebbero stati reindirizzati tutti nella mia casella di posta, ma non è così. Spero che nel frattempo tu abbia risolto, ma rispondo comunque, magari potrà servire a qualcun'altro o al futuro me.

    Per aggiungere del testo al termine di un file che già contiene altro testo devi aprire lo stream in modalità "append". E' possibile farlo utilizzando il costruttore
    new FileOutputStream(f, true);
    invece di quello che ho usato io: il secondo argomento del costruttore è un boolean che la classe FileOutputStream usa per sapere se il file è aperto in modalità "append". Una volta aperto lo stream in questo modo tutto quello che scriverai tramite il PrintStream sarà aggiunto al termine del file.

    RispondiElimina