Serializzazione e Strutture dati

stromgald

Nuovo Utente
14 Set 2011
2
0
0
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;
		
	}
	[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;
	}
 

Slyfer

Utente Attivo
4 Dic 2010
65
21
0
Ciao

il problema sta nel fatto particolare cerchi di leggere due volte l'oggetto da file, la prima per controllare che non sia nulla e la seconda per restituire l'oggetto.

Devi modificare il codice così:

Codice:
Object readObject = ois.readObject();
			if (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>) readObject;

ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Serializzazione in java Java 1
Eugene [Joomla] Problemi con modulo per strutture alberghiere JHotelreservation starter Joomla 6
S [OFFERTA DI LAVORO] Recensori strutture alberghiere Offerte e Richieste di Lavoro e/o Collaborazione 0
catellostefano Strutture per posizionare server Web Server 0
A Aumento PAge Rank Strutture ricettive Gratis!! SEO e Posizionamento 0
K Strutture di controllo PHP 1
A Stampare dati da form PHP 8
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 2
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6
G inserire dati automaticamente in mysql PHP 0
Tommy03 Unire dati da due tabelle MySQL 5
S Trasferire dati sulle pagine del sito PHP 7
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
L inviare i dati di un form ad un database PHP 6
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
G Rendere dati di una tabella mysql link PHP 22

Discussioni simili