Oppure

Loading
15/07/14 11:56
Majesticeagle
Salve a tutti, sto provando a fare un programma che mi gestisce una rubrica. Ho una classe Rubrica che ha come attributo un Vector che contiene diversi oggetti di tipo Voce (un'altra classe creata da me). Quando aggiungo una nuova voce al Vector salvo anche i dati su un file con questo metodo:
public void salvaDati()
	{
		Voce e;
		
		try
		{
			FileOutputStream f = new FileOutputStream(new File("C:/elenco.dat"));
			ObjectOutputStream fout = new ObjectOutputStream(f);
			for(int i=0;i<rubrica.size();i++)
			{
				e = (Voce) rubrica.elementAt(i);
				fout.writeObject(e);
			}
			f.close();
		}catch(Exception e2)
		{
			System.out.println("ERRORE SCRITTURA FILE");
		}
	}

All'apertura del programma carico i dati salvati precedentemente sul file con questo metodo:
public void leggiDati()
	{
		try
		{
			FileInputStream f = new FileInputStream(new File("C:/elenco.dat"));
			ObjectInputStream fin = new ObjectInputStream(f);
			Voce e;
			while(true)		//Finchè non finisce il file
			{
				try
				{
					e = (Voce) fin.readObject();
					rubrica.addElement(e);
				}catch(EOFException e2)
				{
					System.out.println("FINE FILE");
					break;		//Alla fine del file esco dal ciclo
				}
			}
			f.close();
		}catch(Exception e)
		{
			System.out.println("ERRORE IN LETTURA DEL FILE");
		}
	}

Una volta avviato il programma e caricati i dati dal file, aggiungo un'altra voce al Vector e in pratica è come se soprascrivesse la voce precedente!!!:d Infatti poi salvo i dati sul file e quando li ricarico sul file è presente soltato l'ultima voce inserita e non anche quella che avevo inserito in un'altra esecuzione e quindi salvato sul file!!!
Aiutatemiiii! Non riesco a capire il problema dov'è!:_doubt:

Dopo diverse prove ho capito che il metodo che uso dall'esterno per aggiungere una voce al Vector funziona male, ossia aggiunge la voce ma non va mai avanti con le posizioni ma sovrascrive sempre la prima!!! Questo è il metodo:
public void aggiungiVoce(Voce v)
	{
		rubrica.addElement(v);		//Cercare soluzione a questo metodo
		System.out.println("DOPO L'AGGIUNTA DELLA VOCE: " + getSize());
	}
	
Ultima modifica effettuata da Majesticeagle 15/07/14 13:15
aaa
15/07/14 13:17
Majesticeagle
Ragazzi ho risolto da solo,
mi sono accorto soltanto dopo che creavo oggetti diversi, quindi mi è bastato fissare un attributo statico in modo tale che gli altri oggetti avessero questo oggetto tutti uguali.

Scusatemi ancora:_doubt::hail:
aaa