26

04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

Embed Size (px)

Citation preview

Page 1: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream
Page 2: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Introdução

• Tipos de Fluxo de Dados e de Arquivos

• Manipulação de Arquivos em Java

− Classes FileReader e FileWriter

− Classes FileInputStream e FileOutputStream

− Classe RandomAccessFile

• Visão Geral sobre a Manipulação de Arquivos em C/C++

Manipulação de Arquivos

Page 3: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Programas manipulam dados que geralmente se encontram na

memória do computador;

• Ex.: variáveis declaradas em um programa

• Esses dados são perdidos quando o programa é finalizado

Manipulação de Arquivos

Page 4: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42Manipulação de Arquivos

Page 5: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Problema: como recuperar dados obtidos em uma execução anterior do programa?

• Solução: armazenar esses dados em disco na forma de arquivos

• Os arquivos permitem o armazenamento de dados por um longo período de tempo, em uma memória não-volátil, de forma independente do programa que o manipula

Manipulação de Arquivos

Page 6: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42Manipulação de Arquivos

Arquivo

Lê tempo

Escrevetempo

tempo

execução

Page 7: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• O fluxo de dados entre a aplicação e o arquivo pode ser de entrada ou de saída• Fluxo de Entrada: a aplicação lê dados do arquivo e armazena em uma variável

• Fluxo de Saída: a aplicação escreve o valor de uma variável no arquivo

Manipulação de Arquivos

ArquivoPrograma Java

ArquivoPrograma Java

Page 8: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Os arquivos podem ser classificados em arquivos de texto ou arquivos binários

• Arquivos de texto: são compostos por uma série de caracteres ascii agrupados em uma ou mais linhas. São compreendidos pelos seres humanos.

•Arquivos binários: composto por uma série de bytes representados por caracteres não compreendidos pelo ser humano. São menores que os arquivos de texto. Ex.: imagens, vídeo, áudio, etc.

Manipulação de Arquivos

Page 9: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Pacote java.io possui as classes para a manipulação de arquivos (import java.io.*;);

•Essas classes são divididas em duas hierarquias de acordo com o tipo de arquivos que manipulam:

•FileInputStream/FileOutputStream (arquivos binários)

•FileReader/FileWriter (arquivos de texto)

•Os arquivos e diretórios podem ser representados através da classe File

Manipulação de Arquivos

Page 10: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42Manipulação de Arquivos

• public String getParent(); retorna o diretório pai•public list(); retorna lista de arquivos contidos no diretório•public boolean isFile(); retorna se é um arquivo•public boolean isDirectory(); retorna se é um diretório•public boolean delete(); tenta apagar o diretório ou arquivo•public long length(); retorna o tamanho do arquivo em bytes•public boolean mkdir(); cria um diretório com o nome do arquivo•public String getAbsolutePath(); retorna o caminho absoluto•public String getPath();•public String getName();

Page 11: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42Manipulação de Arquivos

Page 12: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Utilizada para escrita em arquivos de texto

•Construtores:

•public FileReader(String name)

•public FileReader(File file)

• Usa o método read() para ler um caracter por vez

Manipulação de Arquivos

Page 13: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Exemplo

Manipulação de Arquivos

Page 14: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Para agilizar a leitura é usada a classe BufferedReader

Manipulação de Arquivos

Page 15: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Para agilizar a leitura é usada a classe BufferedReader

Manipulação de Arquivos

Page 16: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Utilizada para escrita em arquivos de texto

•Construtores:

•public FileWriter(String name)

•public FileWriter(String name, boolean append)

•public FileWriter(File file)

•public FileWriter(File file, boolean append)

• Usa o método write() para escrever um caracter por vez

Manipulação de Arquivos

Page 17: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Exemplo

Manipulação de Arquivos

Page 18: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Para agilizar a escrita é utilizada a classe BufferedWriter

Manipulação de Arquivos

Page 19: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Utilizada para escrita em arquivos binários

•Construtores:

•public FileOutputStream(String name)

•public FileOutputStream(String name, boolean append)

•public FileOutputStream(File file)

•public FileOutputStream(File file, boolean append)

Manipulação de Arquivos

Page 20: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Exemplo:

• Exercício: escrever em um arquivo o texto digitado no teclado

Manipulação de Arquivos

Page 21: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Utilizada para leitura de arquivos binários

•Construtores:

•public FileInputStream(String name)

•public FileInputStream(File file)

Manipulação de Arquivos

Page 22: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Dados dois arquivos arq1 e arq2, desenvolva programas em java

que implementem as seguintes funcionalidades:

• copia o conteúdo do arq1 para arq2

• copia o conteúdo do arq1 para arq2, ao final dele (append)

• imprime na tela todo o conteúdo do arquivo arq1

• Obs.: os arquivos arq1 e arq2 são arquivos de texto

Manipulação de Arquivos

Page 23: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Classe que permite a leitura e escrita em um arquivo com

acesso randômico

•Possui um file pointer que indica a posição atual para acessar o

arquivo

• o file pointer pode ser obtido através do método getFilePointer

e alterado através do método seek

Manipulação de Arquivos

Page 24: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Exemplo de leitura

Manipulação de Arquivos

Page 25: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Diferente de Java, as principais funções para manipulação de arquivos em C/C++ não utilizam os conceitos de orientação a objetos• Para manipular arquivos com essas funções deve ser seguida a sequência de operacões:• abrir o arquivo – fopen()• ler/escrever no arquivo – getc()/putc() – fgets()/fputs() – fscanf() /fprintf() •Fechar o arquivo – fclose()

Manipulação de Arquivos

Page 26: 04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream

11:42

• Java: Como Programar, HARVEY M. DEITEL & PAUL J. DEITEL, Prentice-Hall, 2005.•Head First Java, KATHY SIERRA & BERT BATEA, O´Reilly, 2005.•C Completo e Total, HERBERT SCHILDT, Makron Books, 1997.• www.dca.ufrn.br/~clauber/

Manipulação de Arquivos