Si può scrivere su file usando due modalità: carattere per carattere e per stringhe, nello stesso modo in cui si può leggere.
Il seguente programma ScriviDue.java mostra un esempio di scrittura sul file usando la modalità di carattere per carattere.
import java.io.*; class ScriviDue { public static void main(String args[]) throws IOException { FileWriter w; w=new FileWriter("scrittura.txt"); w.write('a'); w.write('b'); w.flush(); } }
Quando si esegue w.write viene scritto un carattere. Dopo aver scritto tutto bisogna fare w.flush.
Si usando oggetti BufferedWriter, su cui write permette la scrittura di una stringa (invece che di un singolo carattere).
FileWriter w; w=new FileWriter("prova.txt"); BufferedWriter b; b=new BufferedWriter (w); b.write("abcd\nefghi");
Quando viene eseguito b.write("abcd\nefghi") vengono scritte su file le due righe abcd e efghi. Si usa il carattere \n per andare a capo: se all'interno o alla fine di una stringa compare \n, in quel punto si andrà a capo.
Il programma ScriviUna.java contiene un esempio completo di scrittura su file.
import java.io.*; class ScriviUna { public static void main(String args[]) throws IOException { FileWriter w; w=new FileWriter("scrittura.txt"); BufferedWriter b; b=new BufferedWriter (w); b.write("abcd\nefghi"); b.write("123"); b.flush(); } }
Quando viene eseguito questo programma, il file scrittura.txt diventa:
abcd efghi123 |
Si noti che il ritorno a capo non appare fra le due stringhe stampate ma soltanto dove in una stringa da stampare c'è \n.
Esercizio: scrivere un programma che scrive su file i valori della funzione f(x)=x2-10x+4 per x intero da -10 a 10
Usare il metodo String Integer.toString(int) per convertire un intero in stringa (parametro intero e valore di ritorno stringa).
Soluzione: si fa un ciclo in cui, a ogni passo, si calcola il valore della funzione per un certo valore di x e poi si converte il risultato in stringa e lo si scrive su file.
Per andare a capo alla fine di ogni valore va stampata la stringa "\n", ossia la stringa che contiene un solo carattere '\n'.
Il programma ScriviFunzione.java contiene la soluzione completa.
import java.io.*; class ScriviFunzione { public static void main(String args[]) throws IOException { FileWriter w; w=new FileWriter("scrittura.txt"); BufferedWriter b; b=new BufferedWriter (w); int x, f; String s; for(x=-10; x<=10; x++) { f=x*x-10*x+4; s=Integer.toString(f); b.write(s); b.write("\n"); } b.flush(); } }