Você está na página 1de 37

Programação Orientada a Objetos

Persistência de dados
Programação em Computadores

Cristian Cechinel

Slides professora Priscila Cadorin Nicolete


Persistência de Dados
Persistência de Dados

• A persistência de dados, na computação, refere-se ao


armazenamento não-volátil de dados, por exemplo, o
armazenamento em um dispositivo físico como um disco
rígido.
• Quando se grava um arquivo no disco, por exemplo, o
dado está sendo “eternizado”, ou seja, deixa de ficar
volátil na memória RAM e passa a ser escrito num
dispositivo que armazena a informação de modo que ela
não desapareça facilmente.
Persistência de Dados

• Pode-se dizer que de maneira geral, o termo persistência


é associado a uma ação que consiste em manter em
meio físico recuperável, como banco de dados ou arquivo,
de modo a garantir a permanência das informações.
Persistência de Dados

• De modo geral, a persistência armazena o estado dos


objetos em algum repositório para recuperá-los no futuro:

• Os repositórios podem ser:


– Arquivos de Sistema
– Um Banco de Dados Relacional (BDR)
– Um Banco de Dados Orientado a Objetos (BDOO)
Persistência de Dados

• Para trabalhar com arquivos em Java utilizamos as


classes do pacote java.io;

• Existem diversas maneiras diferentes para realizar a


leitura/escrita em arquivos;

• Pode-se utilizar a manipulação de arquivos em modo


binário e não binário (Strings e caracteres);
Criação, Leitura e Escrita de Arquivos

File; Arquivo

FileWriter;
PrintWriter; Gravação
BufferedWriter;

FileReader;
BufferedReader; Leitura
Classe File

• Função: Permite o acesso aos arquivos do sistema


operacional, ou seja, representa um arquivo ou diretório,
pela qual pode-se obter informações como nome,
tamanho, se é ou não um diretório, se tem permissão
para escrita ou leitura etc.
• Objetos da classe File, não abrem arquivos nem
fornecem capacidades de processamento de arquivos.
• Entretanto, os objetos File são utilizados frequentemente
com objetos de outras classes java.io para especificar
arquivos ou diretórios a manipular;
Classe File

• Instâncias da classe java.io.File representam caminhos


(paths) para possíveis locais no sistema operacional.
• Lembre-se que ele apenas representa um arquivo ou
diretório, isto não quer dizer que este caminho exista ou
não.
Classe File

• Alguns métodos da classe File


– boolean mkdir()
– boolean canRead()
– boolean canWrite()
– boolean exists()
– boolean isFile()
– boolean isDirectory()
– String delete()
– String getPath()
Classe File

• Caminho relativo

• Criar um ponteiro para um caminho no sistema operacional não


significa criar o arquivo/diretório.
• As instanciações do código acima irão funcionar mesmo se você
não possua esses arquivos, porém não irão apontar para um
arquivo/diretório existente.
Classe File

• Caminho relativo

Ve j a o q u e o c o r r e
quando o arquivo
ainda não existe
Classe File

• Caminho relativo

Ve j a o q u e o c o r r e
quando o arquivo
ainda não existe
java.io.FileWriter
• Classe para escrever em arquivos;
• Utiliza o método write;
• Construtores:
– public FileWriter(String name)
– public FileWriter(String name, boolean append)
– public FileWriter(File le)
– public FileWriter(File le, boolean append)
FileWriter writer = new FileWriter("saida.txt");
FileWriter writer = new FileWriter("saida.txt",true);
FileWriter writer = new FileWriter(new File("saida.txt"));
FileWriter writer = new FileWriter(new File("saida.txt"),true);
• Ao especificar um segundo parametro como true está se indicando que se
deseja adicionar dados a um arquivo que ja existe em vez de sobregravar
esse arquivo (modo append)
java.io.FileWriter

File arq = new File('/home/cechinel/Desktop/AulaPersistencia/dados.txt);


FileWriter escritor = new FileWriter(arq);

//Classe FileWriter define objetos capazes de escrever caracteres em um


arquivo
//Nesse caso, vinculamos o arq (instancia da classe File) com o objeto escritor
da classe FileWriter
//Cria o arquivo, caso não exista
//Agora o escritor conseguirá gravar caracteres no arquivo arq
java.io.FileWriter
java.io.FileWriter
Exige o tratamento do exceções
java.io.FileWriter
Definindo que o "escritor" pode trabalhar com um arquivo existente. Irá
funcionar como um append
java.io.FileWriter
Dizendo para pular linha ao escrever
java.io.FileWriter
Fecha o arquivo
java.io.PrintWriter

• Mais indicada para escrever Strings em arquivos;


• Utiliza os métodos print, println e printf para a escrita em
arquivos.
java.io.PrintWriter

• Construtores:
– public PrintWriter(String name)
– public PrintWriter(File le)

PrintWriter saida = new PrintWriter( “arquivo.txt” );


PrintWriter saida = new PrintWriter(new File(“arquivo.txt”));

• Também é possível utilizar um FileWriter no construtor


FileWriter fw = new FileWriter("D:\\Documents\\saida2.txt“,true);
PrintWriter saida= new PrintWriter(fw);
java.io.PrintWriter

• Exemplo 1
java.io.PrintWriter

• Exemplo 2
java.io.PrintWriter

• Exemplo 2
java.io.PrintWriter

• Exemplo 3
– Use a classe FileWriter para escrever com o append

FileWriter fr = new FileWriter("arquivo.txt", true);


PrintWriter saida = new PrintWriter( fr );

saida.println("Camera's ready,"); saida.println("Prepare to


flash....");

saida.close(); //fecha o arquivo


fr.close(); //fecha o filewriter
java.io.BufferedWriter

• A classe BufferedWriter é utilizada para agilizar o


processo de gravação

• Quando não se utiliza o BufferedWriter no meio, voce terá


como resultado uma conversão de caracteres em bytes e
gravação no arquivo a cada chamada do método print e
suas variantes, o que pode ser MUITO custoso.
java.io.BufferedWriter

• Contrutor
• public BufferedWriter(FileWriter le)

FileWriter arq = new FileWriter(“dados.txt”);


PrintWriter out = new PrintWriter(new BufferedWriter(arq));
java.io.BufferedWriter

• Exemplo 1
java.io.BufferedWriter

• Exemplo 2
java.io.FileReader

• Cria um “leitor de arquivos”;

• Construtores
• public FileReader(String name)
• public FileReader(File le)

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

FileReader reader = new FileReader("saida.txt");


FileReader reader = new FileReader(new File("saida.txt"));
 Programação de Computadores - Prof. Priscila Cadorin Nicolete
java.io.FileReader

• Cria um “leitor de arquivos”;

• Construtores
• public FileReader(String name)
• public FileReader(File le)

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


java.io.BufferedReader

• Para facilitar a manipulação de arquivos o java nos


fornece uma classe chamada java.io.BufferedReader, que
contém os métodos read e readLine
BufferedReader leitor = new BufferedReader(reader);

FileReader reader = new FileReader("D:\\Documents\\saida2.txt");


BufferedReader leitor = new BufferedReader(reader);

String linha = null;


while((linha = leitor.readLine()) != null) { System.out.println("Linha: "
+ linha);
}
java.io.BufferedReader
• Exemplo 02

 Programação de Computadores - Prof. Priscila Cadorin Nicolete


Exercícios

1. Crie uma classe que leia nomes de pessoas a partir do usuário e grave os
dados lidos em um arquivo, repita essa operação até o usuário digitar SAIR.
Depois leia o arquivo escrito.
2. Faça um programa que copie em um novo arquivo os nomes armazenados
no arquivo criado no exercício anterior.
3. Faça um programa que receba um nome através do usuário e verifique se
está no arquivo criado no exercício 1. Caso o nome se encontra no arquivo
mostrar uma mensagem na tela “Nome já cadastrado”. Se não, armazenar
no arquivo.
4. Altere o programa anterior e faça que o mesmo execute várias vezes, até
que o usuário digite SAIR.
Referências
• Slides professora Priscila Cadorin Nicolete
• Deitel