ArrayList con file binari

di il
1 risposte

ArrayList con file binari

Buonasera, sto facendo un piccolo programma con l'utilizzo dei file binari.
Nello specifico ho creato una classe Atleta
Voglio che il mio programma crea una lista di atleti e li memorizzi su file binario e poi che questi vengano letti.
Nel main ho quindi creato un ArrayList di atleti che aggiunto tre atleti.
Poi ho aperto uno stream di output e con il metodo writeObject ho scritto su file la lista.
		try {
					OutputStream = new ObjectOutputStream(new FileOutputStream(nomeFile));
					OutputStream.writeObject(ListaAtleti);
					OutputStream.close();
				} catch (IOException e) {
					System.out.println("Errore di apertura del file di output");
					
				}
Successivamente ho aperto uno stream di input per leggere il file.
Ho quindi creato un altro ArrayList vuoto (lista da leggere) e poi con questo metodo ho cercato di leggere da file, ma mi da errore, perchè a quanto pare non trova la classe.

	
	ArrayList<Atleta> listadaLeggere = new ArrayList<Atleta>();
	try {
			inputStream = new ObjectInputStream(new FileInputStream(nomeFile));
			listadaLeggere = (ArrayList<Atleta>)inputStream.readObject();
			
		} catch (FileNotFoundException e) {
			System.out.println("FIle");
			System.exit(0);
		}catch (IOException e) {
			System.out.println("Errore file");
		}
l'errore si verifica proprio a questa riga:
listadaLeggere = (ArrayList<Atleta>)inputStream.readObject();

1 Risposte

  • Re: ArrayList con file binari

    Ho implementato java.io.Serializable; nella classe Atleta:
    
    import java.io.Serializable;
    
    public class Atleta implements Serializable {
    
    	private static final long serialVersionUID = 1L;
    	private String nome;
    	private int eta;
    	
    	public Atleta() {
    	}
    	public Atleta(String nome, int eta) {
    		this.nome = nome;
    		this.eta = eta;
    	}
    	public String getNome() {
    		return nome;
    	}
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    	public int getEta() {
    		return eta;
    	}
    	public void setEta(int eta) {
    		this.eta = eta;
    	}
    	@Override
    	public String toString() {
    		return "Atleta [nome=" + nome + ", eta=" + eta + "]";
    	}
    }
    
    La scrittura e lettura funziona correttamente:
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Prova {
    	
    	private static final String FILE = "prova.dat";
    
    	@SuppressWarnings("unchecked")
    	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
    		
    		List<Atleta> atleti = Arrays.asList(
    					new Atleta("atleta1", 38),
    					new Atleta("atleta2", 37),
    					new Atleta("atleta3", 36)
    				);
    				
    		ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(FILE));
    		outputStream.writeObject(atleti);
    		outputStream.close();
    		
    		List<Atleta> leggiLista = new ArrayList<>();
    		
    		ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(FILE));
    		leggiLista = (List<Atleta>) inputStream.readObject();
    		inputStream.close();
    		
    		for (Atleta atleta : leggiLista)
    			System.out.println(atleta);
    	}
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte