Creazione di file in Java
Il corso che sto seguendo inizia a dare i suoi frutti e ho deciso di riportavi qualcosa di quello che ho imparato.
Comincio che una delle operazioni consentite sui file: la scrittura.
La scrittura di un semplice fila di testo in Java non è una cosa banale, ed è inutile creare grossi programmi immagazzinando i risultati su file.
Prendiamo un gestionale: che senso ha scrivere tutto su file di testo invece che su un database??
Nessuna, ma torna comunque molto utile.
Vediamo allora qual'è il processo:
- creazione di un oggetto FileWriter per la creazione e apertura del file
- creazione di un oggetto PrintWriter per la redirezione del flusso di dati
- chiusura del canale che garatisce che il programma ha cessato di usare il file e che i dati potranno essere scritti
Vi posto un pò di codice che andremo a spiegare:
import java.io.*;
public class Scrittura {
public static boolean ScriviFile (int[] array, String nome){
try{
FileWriter file=new FileWriter(nome, true);
PrintWriter scrivi=new PrintWriter(file);
for(int i=0; i<array.length; i++){
scrivi.println(array[i]);
}
scrivi.close();
return true;
}
catch(IOException errore){
System.out.println(errore.getMessage());
return false;
}
}
public static void main(String[] args){
boolean b;
int[] array={1,2,3};
b=ScriviFile(array, "c:\\prova.txt");
}
}
Le operazioni che coinvolgono i file possono incorrere in situazioni inattese.
Bisogna quindi gestire le possibili eccezioni IOException.
Tralascio tutta la gestione delle eccezioni.
Alla prima riga importiamo tutto il package che ci serve per gestire queste eccezioni e per usare FileWriter, PrintWriter, ecc.
Poi creo una classe Scrittura (che potete rinominare come vi pare ovviamente).
In questo esempio noi non prendiamo i dati da altre parti ma dobbiamo crearli.
Per farlo mi affido ad un array di interi.
Il metodo l'ho impostato come statico e boolean.
A questo punto devo aprire il blocco try/catch.
In questo blocco si devono racchiudere tutte le operazioni "pericolose" in modo da poter gestire le eccezioni.
E' obbligatorio mettere in questo blocco le operazioni che riguardano i file.
(PS: ci posono essere anche più catch, ed eventualmente/facoltativamente anche il blocco finally che esegue sempre l'operazione impartita).
Creo un oggetto FileWriter file; badate a quel true: il comportamento di base è quello di cancellare quello che c'era in precedenza ogni volta che il programma viene eseguito.
Se impostiamo il metodo come boolean e mettiamo il true è possibile scrivere sotto a quello che c'era senza cancellare niente.
Poi creiamo un oggetto PrintWriter passandogli l'oggetto creato col FileWriter.
Creo un ciclo for in modo che mi legga tutti i dati contenuti nell'array; come vedete richiamo l'oggetto PrintWriter (scrivi.println....).
Chiudo il flusso e il tray.
Apro il catch per gestire l'errore e lo richiudo.
Nel metodo main inizializzo una variabile di tipo boolean.
Creo un array di interi.
E infine richiamo il metodo ScriviFile.
Un appunto sul percorso del file:
- se mettete solo il nome senza un percorso il file verrà creato nella directory del progetto.
- dovete due \\, perchè uno solo \ viene usato per andare a capo (\n), ecc
- rcordatevi che i percorsi sono diversi a seconda del sistema usato: Windows è diverso da Mac e Linux; se provate ad eseguire questo codice sul Mac il file verrà creato lo stesso, ma non prende il percorso e il file viene nominato "c/\prova.txt"
Spero possa essere utile.
La prox volta spiegherò la lettura dei file.
Ciao!
java Java file FileWriter PrintWriter filewri
Commentami!