Salve a tutti avrei un un problema da risolvere.
Vi spiego la mia situazione , voglio prendere dei dati dal web una volta fatto, elaborarli e conservarli serializzandoli su file. Questi dati su ho file devo riuscirli a recuperare in qualche modo , nel senso che non voglio che siano sovrascritti e quindi che vengono aggiunti nuovi Oggetti contenuti all'interno del file quindi vorrei utilizzare una struttura anche ArrayList va bene.
Ho fatto tutto il programma e riesco anche a salvare su file , il problema resta la struttura in cui memorizzarla. Ho provato quindi a salvare un arraylist <Dati> e funziona solo che funge finchè cè almeno 1 Dato dentro.//risolto questo problema ma creato un altro//
Nello specifico , quando vado a chiamare la funzione per salvare il file , gli viene passato l'oggetto Dato. Il metodo della classe che si occupa del salvataggio , caricamento e quant'altro si chiama GestioneDati. Quando invoco il metodo di salvataggio di questa classe , il programma mi legge il contenuto del file , metto questo dato in un ArrayList (che è lo stesso dato che è contenuto nel file) e aggiungo tramite il metodo .add l'oggetto Object passato come parametro (che in teoria è un oggetto Dati).
Onestamente non mi garba tanto como ho organizzato la struttura.Vorrei prima risolvere il problema (per una questione di principio) e poi trovare una struttura migliore. Considerate che deve salvare 3 4 String + 1 oggetto GregoriusCalendar ogni giorno(devo mettere il controllo di recuperare l'ultimo oggetto dell'arraylist verificare la data e controllare se è passato 1 giorno). Quindi credo che come dimensioni con l'arraylist ci siamo visto che dovrebbe contenere 2^31-1 bytes giusto?
Vi posto il codice del salvataggio e caricamento
L'errore che ricevo è Impossibile caricare i dati metodo check: java.io.EOFException e dovrebbe essere dato da tmp= (ArrayList<Dati>) ois.readObject();
codice://Questo metodo controlla se vi sono dati nel file , se è vuoto credo un //ArrayList tmp inizializzato e lo passa al metodo salva public ArrayList<Dati> check(){ ArrayList<Dati> tmp = new ArrayList<Dati>(); ObjectInputStream ois; try{ fileInput=new FileInputStream("prova.dat"); ois=new ObjectInputStream(fileInput); if(ois.readObject() == null){ Logger.getLogger("il file è vuoto"); ois.close(); return tmp; } //L'errore che ricevo arriva dalla riga sottostante (Impossibile caricare i dati // metodo check: java.io.EOFException) tmp= (ArrayList<Dati>) ois.readObject(); ois.close(); }catch(IOException e){ System.out.println("Impossibile caricare i dati metodo check: "+e); } catch(ClassNotFoundException e){ System.err.println("error"); } return tmp; } //Questo metodo riceve i dati del file prova.dat che contiene un ArrayList<Dati> ed aggiunge l'oggetto Dati che viene passato dal main e lo salva su file public void salva(Object obj){ try{ ArrayList<Dati> temp = check(); temp.add((Dati) obj); ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("prova.dat")); os.writeObject(temp); os.flush(); os.close(); } catch(IOException e){ System.out.println("Impossibile salvare i dati: "+e); } } public Object carica(String path){ Object obj=null; try{ fileInput=new FileInputStream(path); ois=new ObjectInputStream(fileInput); obj=ois.readObject(); ois.close(); } catch(IOException e){ System.out.println("Impossibile caricare i dati: "+e); } catch(ClassNotFoundException e){ System.err.println(); } return obj; }

Rispondi quotando
