Tópicos

  • Entradas e saídas
  • Serialização de objectos em Java

Exercício 1: Leitura de Ficheiros de Texto

Utilizando as classes FileReader e BufferedReader, crie um programa que leia um ficheiro (argumento do método main) linha a linha e que conte o número de caracteres de cada linha. Deve ser apresentada a maior linha encontrada, assim como o seu comprimento em caracteres.

A classe BufferedReader disponibiliza um método ( readLine) que retorna uma cadeia de caracteres ( String) ou null (caso não existam mais linhas).

Não se esqueça de tratar as excepções ( IOException) e de fechar o ficheiro.

Exercício 2: Leitura de Ficheiro Binário

Utilizando as classes DataOutputStream , FileOutputStream e BufferedOutputStream, crie um programa que escreva num ficheiro (binário) as propriedades de um conceito Gato (idade - inteiro, peso - vírgula flutuante de dupla precisão, nome - cadeia de caracteres). As propriedades devem ser escritas independentemente (i.e., não interessa guardar o gato como um todo).

Reabra o ficheiro e apresente os valores anteriormente escritos (leia-os utilizando DataInputStream , FileInputStream e BufferedInputStream ).

As classes DataInputStream e DataOutputStream disponibilizam, respectivamente, métodos para leitura e escrita de tipos primitivos de forma binária: readInt/ writeInt (inteiros - pode lançar EOFException, IOException), readDouble/ writeDouble (double - pode lançar EOFException, IOException), readUTF/ writeUTF ( String - pode lançar EOFException, IOException, UTFDataFormatException).

Não se esqueça de tratar as excepções e de fechar os ficheiros.

Exercicio 3: Serialização de Objectos

Utilizando as classes  ObjectOutputStream , FileOutputStream e BufferedOutputStream, crie um programa que escreva num ficheiro instâncias de um conceito Gato (idade - inteiro, peso - vírgula flutuante de dupla precisão, nome - cadeia de caracteres). Os objectos devem ser guardados como um todo, i.e., deve ser possível recuperá-los como unidades. Para tal, a classe Gato deve implementar a interface Serializable.

Reabra o ficheiro e apresente os valores anteriormente escritos (leia-os utilizando  ObjectInputStream , FileInputStream e BufferedInputStream).

As classes ObjectInputStream e ObjectOutputStream disponibilizam, respectivamente, métodos para leitura e escrita de objectos que sejam instâncias de tipos serializáveis: readObject e writeObject. O primeiro pode lançar ClassNotFoundException, InvalidClassException, StreamCorruptedException, OptionalDataException, IOException. O segundo pode lançar InvalidClassException, NotSerializableException e IOException.

Não se esqueça de tratar as excepções e de fechar os ficheiros.

Soluções

Casos semelhantes aos anteriores e respectivas soluções pode ser consultados no wiki da disciplina. Procurar resolver antes de consultar.