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();
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;
}
[COLOR="Red"]
//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[/COLOR]
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;
}