Arquivos - ObjectInputStream

3 respostas
marcela.cga

Quando tento ler o arquivo que escrevi, dá o seguinte erro: invalid type code: AC
Ele apenas lê o primeiro objeto escrito no .txt e dá o erro em seguida.
Alguém pode me ajudar?

public class RepositorioDadosArquivo{

final String DIRETORIO_AGENTES = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\agentes\\";
    final String DIRETORIO_PUBLICACOES = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\publicacao\\";
    final String DIRETORIO_ASSUNTO = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\assunto\\";
    private ObjectInputStream objectInput;
    private ObjectOutputStream objectOutput;

    private void abrirArquivoAgenteEscrita()
    {
        try{
            objectOutput = new ObjectOutputStream(new FileOutputStream(DIRETORIO_AGENTES + "agente.txt", true));
        }
        catch (IOException ex) {
           System.out.println("Error opening file!");
        }
        catch(SecurityException ex){
            System.out.println("Error opening or creating file!");
        }
    }


    private void abrirArquivoAgenteLeitura()
    {
        try{
            objectInput = new ObjectInputStream(new FileInputStream(DIRETORIO_AGENTES + "agente.txt"));
        }
        catch (IOException ex) {
           System.out.println("Error opening file!");
        }
        catch(SecurityException ex){
            System.out.println("Error opening or reading file!");
        }
    }

    private void fecharArquivoEscrita()
    {
        try
        {
            if (objectOutput != null)
                objectOutput.close();
        }
        catch (IOException ex) {
           System.out.println("Error closing file!");
        }
    }

    private void fecharArquivoLeitura()
    {
        try
        {
            if (objectInput != null)
                objectInput.close();
        }
        catch (IOException ex) {
           System.out.println("Error closing file!");
        }
    }

    public void addAutor(Autor autor)
    {
        try {
                abrirArquivoAgenteEscrita();
                objectOutput.writeObject(autor);
                fecharArquivoEscrita();
            }
        catch(EOFException ex)
        {
            System.out.println("EOFException\nFim do arquivo alcançado\n" + ex.getMessage());
            return;
        }
        catch(IOException ex)
        {
            System.out.println("IOException\nError during write from file\n" + ex.getMessage());
        }
        catch(Exception ex)
        {
            System.out.println("Exception\n" + ex.getMessage());
        }
    }

    public void findAutor() 
    {
        try
        {
            abrirArquivoAgenteLeitura();
            Autor autor;
            while (true)
            {
                autor = (Autor) objectInput.readObject();
                System.out.printf("Codigo: %d - Nome: %s %s\n",autor.getCodigo(),
                    autor.getNome(), autor.getSobrenome());
            }
        }
        catch(EOFException ex)
        {
            System.out.println("EOFException\nFim do arquivo alcançado\n" + ex.getMessage());
            return;
        }
        catch(ClassNotFoundException ex)
        {
            System.out.println("ClassNotFoundException\nUnable to create object\n" + ex.getMessage());
        }
        catch(IOException ex)
        {
            System.out.println("IOException\nError during read from file\n" + ex.getMessage());
        }
        catch(Exception ex)
        {
            System.out.println("Exception\n" + ex.getMessage());
        }
        finally
        {
            fecharArquivoLeitura();
        }
    }

}

3 Respostas

drsmachado
Coloque o código entre as tags
[code]
marcela.cga
public class RepositorioDadosArquivo{
    
        final String DIRETORIO_AGENTES = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\agentes\\";
        final String DIRETORIO_PUBLICACOES = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\publicacao\\";
        final String DIRETORIO_ASSUNTO = "C:\\Users\\Marcela\\Documents\\NetBeansProjects\\Biblioteca-Arquivo\\assunto\\";
        private ObjectInputStream objectInput;
        private ObjectOutputStream objectOutput;

        private void abrirArquivoAgenteEscrita()
        {
            try{
                objectOutput = new ObjectOutputStream(new FileOutputStream(DIRETORIO_AGENTES + "agente.txt", true));
            }
            catch (IOException ex) {
               System.out.println("Error opening file!");
            }
            catch(SecurityException ex){
                System.out.println("Error opening or creating file!");
            }
        }


        private void abrirArquivoAgenteLeitura()
        {
            try{
                objectInput = new ObjectInputStream(new FileInputStream(DIRETORIO_AGENTES + "agente.txt"));
            }
            catch (IOException ex) {
               System.out.println("Error opening file!");
            }
            catch(SecurityException ex){
                System.out.println("Error opening or reading file!");
            }
        }

        private void fecharArquivoEscrita()
        {
            try
            {
                if (objectOutput != null)
                    objectOutput.close();
            }
            catch (IOException ex) {
               System.out.println("Error closing file!");
            }
        }

        private void fecharArquivoLeitura()
        {
            try
            {
                if (objectInput != null)
                    objectInput.close();
            }
            catch (IOException ex) {
               System.out.println("Error closing file!");
            }
        }

        public void addAutor(Autor autor)
        {
            try {
                    abrirArquivoAgenteEscrita();
                    objectOutput.writeObject(autor);
                    fecharArquivoEscrita();
                }
            catch(EOFException ex)
            {
                System.out.println("EOFException\nFim do arquivo alcançado\n" + ex.getMessage());
                return;
            }
            catch(IOException ex)
            {
                System.out.println("IOException\nError during write from file\n" + ex.getMessage());
            }
            catch(Exception ex)
            {
                System.out.println("Exception\n" + ex.getMessage());
            }
        }

        public void findAutor() 
        {
            try
            {
                abrirArquivoAgenteLeitura();
                Autor autor;
                while (true)
                {
                    autor = (Autor) objectInput.readObject();
                    System.out.printf("Codigo: %d - Nome: %s %s\n",autor.getCodigo(),
                        autor.getNome(), autor.getSobrenome());
                }
            }
            catch(EOFException ex)
            {
                System.out.println("EOFException\nFim do arquivo alcançado\n" + ex.getMessage());
                return;
            }
            catch(ClassNotFoundException ex)
            {
                System.out.println("ClassNotFoundException\nUnable to create object\n" + ex.getMessage());
            }
            catch(IOException ex)
            {
                System.out.println("IOException\nError during read from file\n" + ex.getMessage());
            }
            catch(Exception ex)
            {
                System.out.println("Exception\n" + ex.getMessage());
            }
            finally
            {
                fecharArquivoLeitura();
            }
        }

}
marcela.cga

Já descobri o erro.

Obrigada!

Criado 16 de maio de 2011
Ultima resposta 16 de mai. de 2011
Respostas 3
Participantes 2