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 