Orientação a Objetos Manipulando Arquivos Binários Serialização de objetos Gil Eduardo de Andrade Criando arquivos binários A classe “File” e “FileOutputStream” (import java.io.File) (import java.io.FileOutputStream) • Assim como em arquivos texto, o pacote “java.io.*;” também é utilizado para criação e manipulação de arquivos binários; • As classes “File” e “FileOutputStream” permitem a criação desse tipo de arquivo; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Criando arquivos binários As classes “FileOutputStream” e “FileInputStream” (import java.io.FileOutputStream) (import java.io.FileInputStream) • Permitem que um fluxo de dados seja criado entre a aplicação e o arquivo binário manipulado pela mesma; • Ao instanciarmos um objeto da classe “FileOutputStream” ou “FileInputStream” passamos aos seus construtores um objeto da classe File; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Criando arquivos binários Instanciando um objeto “FileOutputStream” • Ao instanciarmos um objeto da classe “File” e posteriormente um objeto da classe “FileOutputStream” criamos um arquivo binário: – File arqBin = new File(“/tmp/arquivo.gea”); – FileOutputStream fos = new FileOutputStream() Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Criando arquivos binários Criando um arquivo binário Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Serialização de Objetos Armazenando objeto em arquivo binário • Serialização, de forma resumida, é o ato de salvarmos em um arquivo binário, o estado interno de um objeto; • Permite salvar em arquivo o estado de um aplicativo para ser recuperado posteriormente, como por exemplo: o estado do tabuleiro de um jogo de xadrez; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Serialização de Objetos As Classes “ObjectOutputStream” • Para que seja possível transferir um objeto em memória para um arquivo binário, é necessário serializá-lo em bytes para depois armazená-lo em arquivo; • A classe que permite efetuar esse processo de serialização é a “ObjectOutputStream”, através do seu método “writeObject()”; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Serialização de Objetos Serializando um objeto Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Serialização de Objetos A Classe “Serializable” (java.io.Serializable) • A classe da qual pretendemos serializar um objeto, armazenando-o num arquivo, deve obrigatoriamente, implementar a interface “Serializable”; • Isso é possível através da utilização da palavra reservada “implements” após o nome da classe a ser serializada, dentro do arquivo que a implementa; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Classe que implementa “Serializable” Exemplo de uma classe “Serializable” Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Des-Serialização de Objetos A Classe “FileInputStream” • Ao instanciarmos um objeto da classe “File” e posteriormente um objeto da classe “FileInputStream” criamos um fluxo de dados para que seja possível obter os dados armazenados em um arquivo binário; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Des-Serialização de Objetos A Classe “ObjectInputStream” • Para que seja possível obter um objeto armazenado num arquivo binário, é necessário efetuar o processo inverso ao de serialização (des-serialização); • A classe que permite efetuar esse processo de des-serialização é a “ObjectInputStream”, através do seu método “readObject()”; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Des-Serialização de Objetos Des-Serializando um objeto Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Orientação a Objetos Tratamento de Exceções em Java try-catch / trows Gil Eduardo de Andrade Tratamento de Exceções em Java Exceptions em Java: • Uma das qualidades da orientação objetos é a possibilidade de tratar possíveis erros de execução, denominados exceptions (exceções); • Exceções podem ser divididas em: – Checked Exceptions; – Unchecked Exceptions; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Checked Exception / Unchecked Exception: • Checked Exceptions acontecem quando o tratamento da exceção é obrigatório por parte do desenvolvedor; • Utiliza-se o método try-catch quando o desenvolvedor sabe como tratar a exceção, ou trows, caso contrário; • Unchecked Exceptions acontecem não há obrigatoriedade no tratamento da exceção; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Método “try”: • Quando um método de uma determinada classe é passível de erro, então é possível utilizarmos o método de tentativa try; • Todo o bloco de código dentro do try será executado até que uma exceção (erro) aconteça; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exemplos de “try”: Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Método “catch”: • Quando uma exceção é lançada, pode ser capturada e tratada através do método catch; • No momento em que a exceção ocorre, o fluxo de código se desloca de dentro do bloco try para dentro do bloco catch; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Método “catch”: • Um bloco de código para um try pode conter vários blocos catch dependendo do número de exceções que podem ser lançadas; • O método catch consegue obter o erro gerado através da instância de classes que representam a exceção; – Ex:. Exception, IOException; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exemplo de “try-catch”: Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exemplo “trows”: Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exceções “exceptions”: • As exceções são representadas por instâncias (objetos) das classes que as representam, isso permite sua manipulação; • Existem métodos que são padrões dentro dessas classes, dos quais podemos citar: – toString(): converte os dados da exceção para visualização; – getCause(): retorna a causa da exceção, ou null se a causa for desconhecida; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exceções “exceptions”: – printStackTrace(): mostra no console o histórico e as linhas de todos os erros encontrados – muito utilizado para depuração (debugging) de código; – getMessage: retorna uma String com a exceção – utilizado para apresentar, de forma elegante, o erro ocorrido ao usuário; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exemplo de “exceptions”: Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Finally: • A função do finally é executar um trecho de código, ainda que uma exceção tenha ocorrido; • Utilizado quando é necessário liberar algum recurso anteriormente alocado, como por exemplo, uma conexão aberta com banco de dados; Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade Tratamento de Exceções em Java Exemplo de “finally”: Aula 10: Manipulando arquivos binários – Gil Eduardo de Andrade