Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Non mi salva su file?

  1. #1

    Non mi salva su file?

    Ciao di nuovo,io e il salvataggio su file abbiamo qualche problema :P
    Volevo chiedere se è possibile che,data la sequenza di istruzioni


    codice:
    fos= new FileOutputStream("C:/Users/laura/prodotti.bin");
       oos= new ObjectOutputStream(fos);
             oos.WriteObject(new Prodotto(5));
               oos.flush();
                 oos.close();
    (dove Prodotto(int n) è il costruttore di un'altra classe che ho comunque definito)
    per qualche motivo non mi salvi l'oggetto. Mi spiego,se adesso nel codice tolgo queste istruzioni e provo ad aprire un FileInputStream e conseguente ObjectInputStream e provo a leggere l'oggetto,che dovrebbe essere salvato nel file, mi crasha: se invece vado di nuovo prima a scrivere poi a leggere,funziona. E' come se non mi salvasse...help me

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Ma quando lo salvi, non c'è nessuna eccezione? Il file verrebbe creato? Avrebbe più di 0 byte? Puoi postare tutto, anche la classe?

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    no,nn mi dà nessuna eccezione quando scrivo
    codice:
    
    import java.io.*;
    
    
    // questa classe si occupa delle operazioni con i file
    
    public class Sorgente {
      // variabili di istanza
    	
    	Prodotto[] prodotti= new Prodotto[2];
    	Prodotto nuovoprodotto,prova;
    	Marca[] marca= new Marca[2];
    	FileOutputStream fosp=null,fosm=null;
    	FileInputStream finp=null,finm=null;
    	ObjectInputStream oisp,oism;
    	ObjectOutputStream outp,outm;
    	String tmp;
    	
    	// nel costruttore apro i file per la lettura e la scrittura
    	public Sorgente(){
    		//apro il flusso di lettura
    		
    		try{
    			fosp= new FileOutputStream("C:/Users/laura/prodotti.bin");
    			outp= new ObjectOutputStream(fosp);
    	
    		
    		}
    	
    		catch(IOException e)
    		{
    			
    			e.printStackTrace();
    		}
    		
    		
    		
    		
    		try{
    			finp= new FileInputStream("C:/Users/laura/prodotti.bin");
    			oisp= new ObjectInputStream(finp);
    		
    			
    	
    		}
    	
    		catch(FileNotFoundException e)
    		{
    			e.printStackTrace();
    		}
    		
    		catch(IOException e)
    		{
    		e.printStackTrace();	
    		}
    		
    	
    }
    // questo metodo legge dal file
    
     public Prodotto[] GetListaProdotti()
     {
    	 
    	 try
    	 {
    		prodotti=(Prodotto[])oisp.readObject();
    		oisp.close();
    			 
    		 
    	 }
    	 
    	 catch(ClassCastException e)
    	 {
    		 e.printStackTrace();
    	 }
    	 
    	 catch(ClassNotFoundException e)
    	 {
    		 e.printStackTrace();
    	 }
     catch(IOException e)
     {
    	 e.printStackTrace();
    	 
     }
     
     return prodotti;
     
     }
    
    // questo metodo scrive sul file
    public void SetListaProdotti(Prodotto[] p)
    {
    try
    {
    outp.writeObject(p);	
    outp.flush();
    outp.close();
    }
    catch(IOException e)
    {
    e.printStackTrace();	
    }
    }

    Praticamente io,in un altra classe con il main, prima chiamo il costruttore,e fin lì nex problema. Poi se provo a chiamare prima SetListaProdotti,passandogli l'array da scrivere, e poi GetListaProdotti, nessun problema. Se però provo a rilanciare il programma,togliendo nella classe con il main la chiamata a SetListaProdotti e cercando solo di leggere mi crasha,mi da errore nella read Object, in particolare "line not availible"
    uffa

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    "line not available" sarà perché non l'avrai compilato con informazioni di debug, no? Ma il file viene creato e ha più di 0 byte?

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    L'hai già provato così, di non instanziare gli stream nel constructor?

    codice:
    import java.io.*;
    
    
    // questa classe si occupa delle operazioni con i file
    
    public class Sorgente
    {
    	// variabili di istanza
    	Prodotto[] prodotti= new Prodotto[2];
    	Prodotto nuovoprodotto,prova;
    	Marca[] marca= new Marca[2];
    	String tmp;
    	
    	// questo metodo legge dal file
    	public Prodotto[] GetListaProdotti() throws Exception
    	{
    		ObjectInputStreamoisp=new ObjectInputStream(new FileInputStream("C:/Users/laura/prodotti.bin"));
    		prodotti=(Prodotto[])oisp.readObject();
    		oisp.close();		 
    
    		return prodotti;
    	}
    
    	// questo metodo scrive sul file
    	public void SetListaProdotti(Prodotto[] p) throws Exception
    	{
    		ObjectOutputStream outp=new ObjectOutputStream(new FileOutputStream("C:/Users/laura/prodotti.bin"));
    		outp.writeObject(p);	
    		outp.flush();
    		outp.close();
    	}
    }

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  6. #6
    In effetti se nn istanzio nel costruttore ma metto tutto insieme gira !! Ti ringrazio
    Ma...perchè fa così?? cioè una volta che il flusso l'ho aperto,nn dovrebbe funzionare ovunque lo metto?
    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.