Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] FileOutputStream e append

    salve ragazzi...ho un problema per quanto riguarda l'append...in pratica per scrivere uso la classe ObjectOutputStream...il file in questione viene scritto, ma quando vado a leggere da questo file riesco a leggere solo il primo oggetto che ho inserito...vi posto il codice usato per scrivere:
    codice:
    		try
    		{
    			fW     = new FileOutputStream("libri.dat",true);
    			fWOUT  = new ObjectOutputStream(fW);
    
    			fWOUT.writeObject(Libri.lastElement());
    			fWOUT.flush();
    
    			fW.close();
    		}
    		catch(Exception e)
    		{
    			return(false);
    		}
    per leggere e inserire gli oggetti in un Vector uso:
    codice:
    	private boolean _caricaLibri()
    	{
    		FileInputStream fR;
    		ObjectInputStream fRIN;
    
    		if(!Libri.isEmpty())
    			Libri.removeAllElements();
    
    		try
    		{
    			fR = new FileInputStream("libri.dat");
    			fRIN = new ObjectInputStream(fR);
    
    			while(true)
    			{
    				try
    				{
    					Libri.addElement(fRIN.readObject());
    				}
    				catch(EOFException e)
    				{
    					break;
    				}
    			}
    
    			fR.close();
    		}
    		catch(Exception e)
    		{
    			return(false);
    		}
    
    		return(true);
    	}
    e facendo un System.out.println(Libri.size()); mi viene stampato 1...dov'è l'errore?

  2. #2
    nessuno riesce ad aiutarmi?

  3. #3
    Prova a postare un esempio completo che riproduce l'errore.

    Poi: aggiungi lo stacktrace o qualcosa nei catch, altrimenti come fai a sapere se c'e' stata un'eccezione?
    Poi: il close andrebbe fatto nel finally
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  4. #4
    nel catch c'era System.out.println(e.getMessage());
    e che vuoi dire con
    Poi: il close andrebbe fatto nel finally

  5. #5
    Che il close va eseguito anche (e soprattutto) se si verifica un'eccezione. Io faccio cosi':

    codice:
     
        public void save() {
            ObjectOutputStream out = null;
            try {
                try {
                    out = new ObjectOutputStream(new FileOutputStream("lotto.dat"));
                    out.writeObject(this);
                } finally {
                    out.close();
                }
            } catch (Throwable t) {t.printStackTrace();};
        }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.