Tópicos

  • Entradas e saídas
  • Serialização de objectos em Java
  • O exercício de C++ deve ser entregue, em papel, na aula prática da semana de 2014/11/09 - ex08cpp.pdf

    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.