Manipulando arquivos em java

0 respostas
R

E ae pessoal beleza?

Estou com problemas para manipular arquivos. Tenho um lista linear encadeada e quero gravar seu estado em um arquivo binário sempre que encerrar o programa. Depois devo carregar novamente seu estado quando iniciar o programa, utilizando os dados que foram gravados no arquivo binário.

Segue abaixo o código que realiza a gravação da lista em um arquivo Produtos.dat:

public void gravar (int n){
        
        no p=inicio.getProx();
        
        File binaryFile = new File ("Produtos.dat");
        
        try{            
            FileOutputStream fos = new FileOutputStream(binaryFile);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            
            //Grava a quantidade de produtos registrados no arquivo
            oos.writeInt(n);       
            
            // escreve todos os produtos da lista no arquivo
            while (p!=null){                
               oos.writeObject (p);
               p=p.getProx();
            }

            // fecha o arquivo
            oos.flush(); 
            oos.close();
            fos.close();            
        }
        catch(IOException e)
        {
            System.err.println(e.getMessage());
        }    
    }

Segue abaixo o código que carrega os dados do Produtos.dat salvo anteriormente para a lista linear encadeada:

public int load (){        
        int n=0;    
        no p, l2; //Representa um objeto do arquivo
        
        p=inicio;         
        
        try {
           FileInputStream fis = new FileInputStream ("Produtos.dat") ;
           ObjectInputStream ois = new ObjectInputStream (fis) ;

           
           //Carrega a quantidade de produto registrados no arquivo
            n= ois.readInt();         
            
           // le objeto a objeto do arquivo e grava na lista 
           l2= (no) ois.readObject ();
           
           while(l2!=null){                            
              p.setProx(l2);
              l2= (no) ois.readObject (); 
           }        
           
          //fecha o arquivo            
          ois.close();
          fis.close();      
       }          
          catch(IOException e)
        {
            System.err.println(e.getMessage());
        }catch(ClassNotFoundException c)
        {
            System.out.println(c.getMessage());
        }              
           return n;
    }

Na tá funcionado, no que eu estou errando? Na gravação ou no carregamento? Ou nos dois?..hehehehe

Desde já, agradeço as respostas :slight_smile:

Criado 9 de março de 2013
Respostas 0
Participantes 1