ArrayList con file binari

di Anonimizzato25057 il
1 risposte
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

  • 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