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.
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.
Tutti gli esercizi d'esame richiederanno di leggere un vettore da file.