Devi sempre effettuaer il flush() dei dati, prima di chiudere il file, poichè nessuno garantisce che il sottosistema di IO abbia effettivamente scritto i dati sul disco, piuttosto che averli ancora tutti nel suo buffer.

codice:
fos.flush()
fos.close();
Poi potresti un attimino migliorare la fase di scrittura... riducendo un sacco di istruzioni e variabili inutili:

codice:
while (i<a.size())
{
   fos.write( ray[i] ); 
   System.out.println( ray[i] );
   i++; 
}
PS1: I tag da usare quando si posta del codice sono i CODE, non i QUOTE che servono per le citazioni.

PS2: la gestione delle eccezioni andrebbe un po' rivista... o meglio, bisognerebbe garantire la chiusura del file anche nel caso in cui venga sollevata un'eccezione... e questo si fa con la clausola finally del blocco try.


Ciao.