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
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 15
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 1
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
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
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

Discussioni simili