Scrivere su file

Si può scrivere su file usando due modalità: carattere per carattere e per stringhe, nello stesso modo in cui si può leggere.

FileWriter
scrive singoli caratteri
BufferedWriter
scrive intere stringhe

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.

Scrittura di stringhe

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: valori di una funzione

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();
  }
}