Lettura di array da file

Se il numero di righe di un file è noto a priori, leggere tutti gli elementi in un array si può realizzare con un ciclo, come nel programma ArrayFile.java

import java.io.*;

class ArrayFile {
  public static void main(String[] args)
  throws IOException {
    int v[]=new int[10];
    int i;
    FileReader f;
    BufferedReader b;
    String s;

    f=new FileReader("numeri.txt");
    b=new BufferedReader(f);

// lettura array da file
    for(i=0; i<10; i++) {
      s=b.readLine();
      if(s==null)
        break;
      v[i]=Integer.parseInt(s);
    }

// stampa dell'array
    for(i=0; i<10; i++) {
      System.out.println(v[i]);
    }

  }
}

Lo stesso sistema si può usare se vanno letti i primi n elementi del file: si fa un ciclo con dieci iterazioni, e gli elementi successivi verranno ignorati.

Numero di righe

Un metodo alternativo consiste nell'inserire il numero di elementi del vettore come prima riga del file. Il programma NumeroFile.java legge un file di questo tipo.

import java.io.*;

class NumeroFile {
  public static void main(String[] args)
  throws IOException {
    int v[];	// viene creata la variabile ma non il vettore
    int n, i;
    FileReader f;
    BufferedReader b;
    String s;

    f=new FileReader("numeri.txt");
    b=new BufferedReader(f);

// lettura numero elementi e creazione array
   s=b.readLine();
   n=Integer.parseInt(s);
   v=new int[n];

// lettura array da file
    for(i=0; i< v.length; i++) {
      s=b.readLine();
      if(s==null)
        break;
      v[i]=Integer.parseInt(s);
    }

// stampa dell'array
    for(i=0; i< v.length; i++) {
      System.out.println(v[i]);
    }

  }
}

In questo caso, la prima riga del file deve ovviamente contenere il numero di elementi seguenti.

Nota

Tutti gli esercizi d'esame richiederanno di leggere un vettore da file.