Manipulação de
Arquivos
• 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++
14:24
Manipulação de
Arquivos
14:24
• 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
14:24
Manipulação de
Arquivos
14:24
• 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
14:24
tempo
execução
Escreve
tempo
Lê tempo
Arquivo
Manipulação de
Arquivos
14:24
• 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
Programa Java
Arquivo
• Fluxo de Saída: a aplicação escreve o valor de uma variável no
arquivo
Programa Java
Arquivo
Manipulação de
Arquivos
14:24
• 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
14:24
• 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
14:24
• 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();
Manipulação de
Arquivos
14:24
Manipulação de
Arquivos
• 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
14:24
Manipulação de
Arquivos
• Exemplo
14:24
Manipulação de
Arquivos
• Para agilizar a leitura é usada a classe BufferedReader
14:24
Manipulação de
Arquivos
• Para agilizar a leitura é usada a classe BufferedReader
14:24
Manipulação de
Arquivos
• 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
14:24
Manipulação de
Arquivos
• Exemplo
14:24
Manipulação de
Arquivos
• Para agilizar a escrita é utilizada a classe BufferedWriter
14:24
Manipulação de
Arquivos
• 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)
14:24
Manipulação de
Arquivos
• Exemplo:
• Exercício: escrever em um arquivo o texto digitado no teclado
14:24
Manipulação de
Arquivos
• Utilizada para leitura de arquivos binários
•Construtores:
•public FileInputStream(String name)
•public FileInputStream(File file)
14:24
Manipulação de
Arquivos
14:24
• 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
14:24
• 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
• Exemplo de leitura
14:24
Manipulação de
Arquivos
14:24
• 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
• 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/
14:24
Download

Manipulação de Arquivos - DCA