Salve a tutti.
Avrai da fare un programma che gestisce un magazzino di Prodotti organizzati per Codice a barre, descrizione e prezzo.
Questo programma deve mettere a disposizione alcune funzionalità quali la carica di un magazzino da un file testuale organizzato come un CSV.

Questa è la parte di codice del carica file:

codice:
	public Magazzino leggiChar(String s){
		FileReader file;
		BufferedReader buff;
		Magazzino mag = new Magazzino();
		String temp ="";
		//ArrayList<String> vect = new ArrayList<String>();
                
                 try{
			file = new FileReader(s);
			buff = new BufferedReader(file);
			String[] vect;	
			while(temp!=null){
				
				Prodotto p = new Prodotto();
				Float f; //Questi due wrapper mi servono per forza perché la split() restituisce un vettore di stringhe, quindi mi servono per fare il "cast".
				Integer i;
				temp = buff.readLine();
				if(temp!=null){
					
					vect=temp.split(";");
					p.setCodBarre(vect[0]);
					p.setDescrizione(vect[1]);
					f = Float.valueOf(vect[2]);
					p.setPrezzo(f);
					i = Integer.valueOf(vect[3]);
					mag.inserimento(p, i);
				}
			}
				
			if(buff != null)
				buff.close();
		}catch(IOException e){}
		
		return mag;
	}
E questo è il file:

codice:
000;Latte;10.0;2; 
003;Caffè;2.2;10; 
001;Cioccolato;5;20;
Quindi è organizzato del tipo CodBarre;descrizione;prezzo;scorte;

Funziona tutto, tranne una cosa: la carica magazzino da un file già esistente sul computer. Praticamente mi rilancia l'eccezione ArrayIndexOutOfBoundException:1 .

Ecco cosa mi esce dalla console di Eclipse:

codice:
1. Carica un magazzino da file di Char
2. Carica un magazzino da un file di byte
3. Crea un nuovo magazzino
0. Esci dal programma
1
Inserisci il percorso del file da caricare
E:/prove/magazzino.txt
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at SerializzatoreMagazzino.leggiChar(SerializzatoreMagazzino.java:85)
	at UIMagazzino.main(UIMagazzino.java:29)
Ho pensato che il problema possa essere quel String[] vect; che mi alloca un vettore di una sola cella. Ho provato quindi a fare un ciclo while per contare quanti record ho, ma sarebbe terribilmente inefficiente. Qualcuno ha qualche altra soluzione?

Grazie a tutti.