A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de 2008. Arquivos em Java.

Apresentações semelhantes


Apresentação em tema: "BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de 2008. Arquivos em Java."— Transcrição da apresentação:

1 BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de Arquivos em Java

2 2 Roteiro Hierarquia de Classes Java Streams (fluxos) Tipos de Arquivos Arquivos Texto Serialização

3 3 Hierarquia de Classes Java

4 4 Streams (Fluxos) Java enxerga um arquivo como sendo um fluxo (stream) seqüencial de bytes Stream é um conceito poderoso que simplifica o tratamento de operações de entrada e saída de dados (I/O) Streams são usados também para comunicação entre computadores em uma rede Java tem mais de 60 tipos de streams Ou seja, mais de 60 classes para tratar de streams!

5 5 Streams de Bytes Os programas usam streams de bytes para realizar entrada e saída de bytes (ou seja, seqüências de 8 bits) Entrada Super-classe: InputStream Várias sub-classes para entrada de dados Saída Super-classe: OutputStream Várias sub-classes para saída de dados

6 6 Streams de Caracteres Programas usam streams de caracteres para realizar operações de entrada e saída de dados em caracteres de 16 bits (Unicode) Entrada Super-classe: Reader Várias sub-classes para entrada de dados Saída Super-classe: Writer Várias sub-classes para saída de dados

7 7 Classes InputStream

8 8

9 9 Classes OutputStream

10 10 Classes OutputStream

11 11 Classes Reader

12 12 Classes Reader

13 13 Classes Writer

14 14 Classes Writer

15 15 Streams de Conexão e de Cadeia Streams de conexão (connection streams) Conexão com fonte ou destino de dados Especializados em escrever e ler dados em arquivos Métodos de muito baixo nível Ex: Escrever e ler um único byte Streams de cadeia (chain streams) Funciona se encadeados com streams de conexão Proporcionam várias funcionalidades adicionais Métodos mais sofisticados Ex.: Ler e escrever um objeto inteiro ou ler e escrever uma linha de texto

16 16 Persistência de Objetos Lendo e Escrevendo Dados Existem várias classes para trabalhar com arquivos em Java Classes existentes na API podem simplificar muitas atividades Duas abordagens são mais comuns para implementar persistência de objetos Armazenar dados em arquivos de texto Usar serialização

17 17 Arquivos Texto Os atributos dos objetos são salvos em arquivos um por um, separados por algum caractere, como “,” (virgula) Um arquivo texto pode ser editado e visualizado facilmente por humanos Simples para fazer intercâmbio de dados entre programas diferentes

18 18 Leitura de arquivo texto com classes Reader Leitura: FileReader: stream de conexão Uma operação de entrada lê um caractere BufferedReader: entrada buferizada Uma operação de entrada lê vários caracteres Exemplo de código FileReader f = new FileReader(“aquivo.txt"); BufferedReader br = new BufferedReader(f); String linha = br.readLine();

19 19 Exemplo: Turma de alunos public void importarAlunos(Turma minhaTurma){ BufferedReader br = new BufferedReader(new FileReader("turma.txt")); String linha; String[] campos = null; while ((linha = br.readLine()) != null){ campos = linha.split(":"); String nome = campos[0]; int idade = Integer.parseInt(campos[1]); double nota = Double.parseDouble(campos[2].replace(",", ".")); minhaTurma.incluirAluno(nome, idade, nota); } br.close(); }

20 20 Escrita em arquivo texto com classes Writer Leitura: FileWriter: stream de conexão Uma operação de saída grava um caractere BufferedWriter: saída buferizada Uma operação de saída não grava necessariamente os dados, que de tempos em tempos são enviados ao destino (disco) PrintWriter: saída de objetos em texto Oferece vários métodos para gravar dados Exemplo de código FileWriter f = new FileWriter(“arquivo.txt"); PrintWriter pw = new PrintWriter (f); pw.println(“Hello World!”);

21 21 Exemplo: Turma de alunos public void exportarAlunos(Aluno[] alunos, int nalunos){ PrintWriter pw = new PrintWriter(new FileWriter("turma.txt")); for (int i = 0; i < nalunos; i++){ String linha = String.format("%s:%d:%.1f", alunos[i].getNome(), alunos[i].getIdade(), alunos[i].getNota()); pw.println(linha); } pw.flush(); pw.close(); }

22 22 Arquivo Texto Arthur:9:10,0 Gabriela:14:10,0 Nil:38:10,0 Maria:20:8,0 José:18:5,0 Joana:17:7,0

23 23 Serialização Serialização é o processo de transformar um objeto na memória para um streams de bytes Deserialização é o processo inverso, de reconstruir um objeto a partir de um stream de bytes para o mesmo estado que o objeto estava antes de ser serializado Para um objeto ser serializado, a sua classe ou alguma super-classe deve implementar a interface Serializable

24 24 Serialização Serialização (escrita) FileOutputStream: stream de conexão ObjectOutputStream: Stream que faz a serialização Exemplo de código FileOutputStream out = new FileOutputStream(“save.ser”); ObjectOutputStream oos = new ObjectOutputStream(out); oos.writeObject(new Date()); oos.close();

25 25 Exemplo: Turma de alunos public void exportarAlunos(Aluno[] alunos, int nalunos){ ObjectOutputStream os = new ObjectOutputStream (new FileOutputStream("Turma.ser")); os.writeObject(nalunos); for (int i = 0; i < nalunos; i++){ os.writeObject(alunos[i]); } os.close(); }

26 26 Classe aluno deve ser serializável public class Aluno implements Serializable { …. }

27 27 Deserialização Deserialização (leitura) FileInputStream: stream de conexão ObjectInputStream: Stream que faz a deserialização Exemplo de código FileInputStream in = new FileInputStream( “save.ser” ); ObjectInputStream ois = new ObjectInputStream( in ); Date d = (Date) ois.readObject(); ois.close();

28 28 Exemplo: Turma de alunos public void importarAlunos(Turma minhaTurma){ ObjectInputStream os = new ObjectInputStream (new FileInputStream("Turma.ser")); int numero = (Integer) os.readObject(); for (int i = 0; i < numero; i++){ Aluno a = (Aluno) os.readObject(); minhaTurma.incluirAluno(a); } os.close(); }

29 29 Serialização de objetos compostos Se um objeto possui referências para outros objetos (ou arrays), esses objetos são também serializados Se esses objetos, por sua vez, possuem referências para outros objetos, esses também são serializados E assim por diante Essa abordagem pode ser usada, por exemplo, para fazer cópias de objetos

30 30 Arquivo Serializado ¼φsrjava.lang.IntegerΓáñ≈üç8[1]Ivaluexr java.lang.Numberå¼ò öαï[1]xp[1]sr turma.Aluno▓≥Zu¬wkr[1] IidadeD

31 31 BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de Arquivos em Java


Carregar ppt "BC-0502 Metodologia e Algoritmos Computacionais Santo André, Abril de 2008. Arquivos em Java."

Apresentações semelhantes


Anúncios Google