Buscar

07 - Arquivos Texto em Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de 
Programação
Arquivos Texto
em Java
Arquivos Texto
• As aplicações não podem ser limitadas a armazenar
seus dados apenas em memória principal (RAM).
• Há uma exigência de que os dados sejam
armazenados de forma mais permanente de forma
que possam ser utilizados posteriormente.
• Uma das formas de armazenamento (secundária)
permanente é o arquivo.
• Arquivo pode ser definido como um conjunto de
dados que podem ser armazenados em memória
secundária do sistema: disco rígido (HD), CDs,
PenDrives, etc.
Arquivo Texto
Aplicação
(programa)
Memória 
Principal 
(RAM)
Memória 
Secundária (HD)
Dados.TXT
Sistema Operacional
Gerenciamento 
acesso a disco
O pacote java.io
• O Java disponibiliza em sua biblioteca um conjunto de
classes destinadas às operações com arquivos.
• O termo IO vem das palavras Input (entrada) e Output
(saída).
• A referência para tratar a entrada e saída é a memória
utilizada pela aplicação:utilizada pela aplicação:
� Input: entrada de dados da memória secundária
(arquivo) para a memória principal(RAM) do
programa (da aplicação) – leitura de dados do
arquivo – operações de READ.
� Output: saída de dados da memória principal (RAM)
para a memória secundária (arquivo) – escrita de
dados no arquivo – operações de WRITE.
O pacote java.io
• O Java como outras linguagens utiliza o conceito de
streams, que podem ser vistos como canais através
dos quais os dados são enviados ou buscados de
fontes de dados (arquivo, por exemplo).
• Para realizar as operações de escrita e leitura em
arquivos precisaremos das streams para realizararquivos precisaremos das streams para realizar
essas operações.
• As classes que operam com streams permitem a
manipulação de diversos formatos de dados.
O pacote java.io
• O conjunto de classes do pacote java.io divide-se em
dois grupos básicos:
� Para a entrada de dados (com base nas classes
InputStream e Reader);
� Para a saída de dados (com base nas classes
OutputStream e Writer).OutputStream e Writer).
• Tecnicamente podemos ter outra divisão:
� Uma engloba as streams baseadas em caracteres
(Reader e Writer)
� Outra engloba as streams orientadas a bytes
(InputStream e OutputStream)
Entrada de Dados
• Para a leitura de dados de arquivos local, utilizamos a
classe FileInputStream cujos construtores recebem um
objeto classe String, File ou FileDescriptor contendo
informações sobre o arquivo a ser aberto.
• Para leitura eficiente de arquivos comuns utilizamos a
classe BufferedReader em associação com a classe
FileReader, evitando ler o dado um a um, permitindo aFileReader, evitando ler o dado um a um, permitindo a
leitura de uma quantidade maior de dados.
• A entrada de dados compreende as operações de:
� Abrir o arquivo
� Ler dados do arquivo
� Fechar o arquivo
Saida de Dados
• Como nas classes de entrada de dados, temos
classes especializadas para a saída de dados. As
operações de saída de dados são realizadas por
classes que derivam de OutputStream e Writer.
• A classe FileWriter é utilizada para operações de
saida, ou seja, de escrita de dados da memória RAMsaida, ou seja, de escrita de dados da memória RAM
para dentro de um arquivo em disco.
A classe FileWriter
• A classe FileWriter é utilizada para a escrita em
arquivos.
• Entre outros, a classe disponibiliza os seguintes
construtores para instanciação de um objeto da
classe FileWriter:
� FileWriter (String)
FileWriter (String, boolean)� FileWriter (String, boolean)
• A saida de dados compreende as operações de:
� Criar (caso não exista)
� Abrir o arquivo
� Escrever dados no arquivo
� Fechar o arquivo
FileWriter
• Instanciação de objeto da classe FileWriter:
� No exemplo abaixo na criação do objeto arq, é
chamado o construtor da classe que recebe o nome
do arquivo a ser criado/aberto.
FileWriter arq = new FileWriter(“Dados.TXT”);
� A instanciação do objeto arq, aciona a criação do
arquivo Dados.TXT na pasta em que a aplicação
está executando.
� Se o arquivo Dados.TXT existir ele será recriado e os
dados serão destruídos.
FileWriter
• Instanciação de objeto da classe FileWriter:
� No exemplo abaixo na criação do objeto arq1, é
chamado outro construtor da classe que recebe o
nome do arquivo a ser criado/aberto e um parâmetro
boolean.
FileWriter arq1 = new FileWriter(“Dados.TXT”,true);
� Se o arquivo Dados.TXT existir ele será mantido e os
dados serão preservados.
FileWriter
• Escrita em arquivos e fechamento de arquivos com a
classe FileWriter:
� Para escrever num arquivo deverá ser utilizado um dos
métodos write disponibilizados na estrutura da classe.
� write (int n) – este método permite escrever um
dado do tipo int no arquivo. O dado é salvo no seudado do tipo int no arquivo. O dado é salvo no seu
formato binário e se visualizado através de um editor
de texto, será visualizado com base nos caracteres da
tabela ASCII.
� write(String s) – este método permitir escrever um
cadeia de caracteres no arquivo.
� close() – este método é utilizado para fechar o
arquivo e atualizar as informações gravadas.
FileWriter – exemplo1
import java.io.*;
public class Principal {
public static void main(String[] args) {
String nome = "jose";
try {
FileWriter arq = new FileWriter("C:\\Dados.TXT“,true);
arq.write(nome+”/r/n”);
arq.close();
} catch (Exception e) {
System.out.println("Erro:" + e.getMessage());
}
}
}
FileWriter
Principal.class
jose
• Em que consiste escrever um dado no arquivo?
nome
arq.write(nome);
Memória Principal RAM
1
2
Dados.TXT
Sistema Operacional
Gerenciamento 
acesso a disco
Memória 
Secundária 
(HD)
arq.write(nome);
jose
A execução do método write (1)
faz uma cópia do conteúdo da
variável nome (2) da memória
principal escrevendo-o dentro
do arquivo.(3)
1
3
FileWriter – exemplo1
• Exemplos: (write)
String nome = “jose”; String email = “jj@com”;
int idade = 30;
• Utilizando o objeto arq definido em slide anterior:
arq.write(nome);arq.write(nome);
arq.write(nome+email);
arq.write(nome+”;”+email);
arq.write(nome + idade); (a conversão do int para
String é implícita)
arq.write(nome +”;”+idade);
A classe FileReader
• A classe FileReader é utilizada para a leitura de
arquivos.
• Entre outros, a classe disponibiliza o seguinte
construtor para instanciação de um objeto da classe
FileReader:
� FileReader (String)
• A leitura de dados compreende as operações de:
� Abrir o arquivo
� Ler dados no arquivo (uma linha ou todas linhas
até o final do arquivo)
� Fechar o arquivo
FileReader
• Instanciação de objeto da classe FileReader:
� No exemplo abaixo na criação do objeto arq, é
chamado o construtor da classe que recebe o nome do
arquivo a ser aberto.
FileReader arq = new FileReader(“C:\\Dados.TXT”);
� A instanciação do objeto arq, aciona a abertura do
arquivo Dados.TXT na pasta C:\.
� Se o arquivo Dados.TXT existir ele será aberto, senão
será gerada uma exceção.
FileReader
• Leitura de arquivos com a classe FileReader:
� A leitura consiste na cópia de um byte ou de um bloco
de dados do arquivo em disco para memória principal
do programa.
� Para ler dados de um arquivo deverá ser utilizado um
dos métodos read disponibilizados (implementados) nados métodos read disponibilizados (implementados) na
estrutura da classe.
� read () – este método ler um byte do arquivo e
retorna o valor int decimal correspondente ao valor do
byte lido na tabela de caracteres ASCII.
FileReader arq = new FileReader(“C:\\Dados.TXT”);
int ch = arq.read();
FileReader
• Leitura de arquivos com a classe FileReader:
� A leitura consiste na cópia de um byte ou de um bloco
de dados do arquivo em disco paramemória principal
do programa.
� Para ler dados de um arquivo deverá ser utilizado um
dos métodos read disponibilizados (implementados) nados métodos read disponibilizados (implementados) na
estrutura da classe.
� read () – este método ler um byte do arquivo e
retorna o valor int decimal correspondente ao valor do
byte lido na tabela de caracteres ASCII.
� Há outros métodos read com outras assinaturas para a
leitura de blocos de dados.
• Exemplo:
� Imagine que o arquivo DADOS.TXT tem o seguinte
conteúdo
FileReader arq = new FileReader(“C:\\Dados.TXT”);
FileReader
20081010;Joseph Markson;jm@site.com.au
20081010;Elizabeth Hurtley;eh@site.com.fi
FileReader arq = new FileReader(“C:\\Dados.TXT”);
int ch = arq.read();
System.out.println(ch);
� A leitura do arquivo, irá ler apenas o primeiro byte do
arquivo, o caracter ‘2’.
� O valor retornado e armazenado na variável ch será
50. Este é o valor do caracter 2 na tabela de caracteres
ASCII.
• Exemplo:
� Uma próxima leitura irá ler o segundo caracter do
arquivo
FileReader arq = new FileReader(“C:\\Dados.TXT”);
FileReader
20081010;Joseph Markson;jm@site.com.au
20081010;Elizabeth Hurtley;eh@site.com.fi
FileReader arq = new FileReader(“C:\\Dados.TXT”);
int ch = arq.read();//primeira leitura
System.out.println(ch);
ch = arq.read();//segunda leitura
System.out.println(ch);
� Na segunda leitura, o valor retornado e armazenado na
variável ch será 48. Este é o valor do caracter 0 na
tabela de caracteres ASCII.
A classe BufferedReader
• Suponha que ao invés de ler o arquivo de texto por
caracteres fosse desejado ler uma linha do arquivo de
cada vez.
• Para tanto, é necessário ler os caracteres um a um e
agregá-los em um buffer (área de memória) até
encontrar o caráter de fim de linha. Então esse conjuntoencontrar o caráter de fim de linha. Então esse conjunto
de caracteres pode ser transformado em uma string e
retornada como resultado desse método.
• Esse tipo de funcionalidade adicional é suportado
através de objetos da classe BufferedReader.
A classe BufferedReader
• Um dos construtores para essa classe recebe como
argumento um objeto Reader, ou seja, utilizando um
objeto da classe FileReader.
• O método readLine implementado na classe
BufferedReader implementa a funcionalidade para
leituras de linhas da fonte de dados (arquivo porleituras de linhas da fonte de dados (arquivo por
exemplo), retornando um objeto String.
A classe BufferedReader
• Exemplo
public static void main (String[] args){
try {
FileReader fr = new FileReader("C:\\Dados.TXT");
BufferedReader arquivo = new BufferedReader(fr);
//Ler a primeira linha do arquivo
String ln = arquivo.readLine();String ln = arquivo.readLine();
System.out.println(ln);
//ler a segunda linha do arquivo
ln = arquivo.readLine();
System.out.println(ln);
} catch (Exception e) {
System.out.println("Erro:"+e.getMessage());
}
}
BufferedReader
• Em que consiste ler uma linha do arquivo?
Principal.class 200810;joselin
String lin = arquivo.readLine();
Memória Principal RAM
3
Dados.TXT
Sistema Operacional
Gerenciamento 
acesso a disco
Memória 
Secundária 
(HD)200810;jose
200920;maria
A execução do readLine (1) faz
a cópia (2) de uma linha do
arquivo para a variável lin (3) na
memória principal.
1
2
A classe BufferedReader
• A cada linha lida do arquivo de dados, o método
readLine retorna uma String contendo todos os dados
da linha copiado do arquivo para a memória principal do
programa.
• Após a leitura da última linha, uma tentativa de nova
leitura do arquivo, fará com que o método readLineleitura do arquivo, fará com que o método readLine
retorne um null indicando que não há mais dados a ler.

Outros materiais