• Nenhum resultado encontrado

Introdução a Programação. Arquivos

N/A
N/A
Protected

Academic year: 2022

Share "Introdução a Programação. Arquivos"

Copied!
24
0
0

Texto

(1)

Introdução a Programação

Arquivos

(2)

Topicos da Aula Topicos da Aula

Hoje aprenderemos a importância de Persistência

Pra que serve?

Persistindo dados: Arquivos

Arquivos

Operações Basicas Operações Basicas Modos de arquivo

Texto Binario

Modos de acesso

Seqüencial Aleatorio

Pacote java.io

Otimizando acesso com Buffers

(3)

Persistência... pra quê?

Não perder os dados no fim da execução de um programa

Memória temporária(volatil) principal

Mais rápida e cara Mais rápida e cara Memória permanente

secundária

mais lenta e barata

(4)

Arquivos

Um arquivo representa um elemento de informação armazenado em memória secundária (disco)

Características:

Informações são persistidas

Atribui-se nomes aos elementos de informação (arquivos e diretórios),em vez de endereços de (arquivos e diretórios),em vez de endereços de memória

Acesso às informações são mais lentos

Para melhorar velocidade de acesso, a cada acesso,

transfere-se trechos maiores do arquivo para espaços

da memória (buffers)

(5)

Arquivos

Informações são armazenadas como Streams (fluxo seqüencial ) de bytes

Não existem tipos Seqüência de bytes

como os dados são representados na

memória

(6)

Operações sobre Arquivos

Operações:

Abertura

Sistema Operacional (SO) encontra arquivo pelo nome Prepara buffer na memória

Leitura

SO recupera trecho solicitado do arquivo SO recupera trecho solicitado do arquivo Parte ou todo trecho pode vir do buffer

Escrita

SO altera conteúdo do arquivo

Alteração é feita primeiro no buffer para depois der transferida para o disco

Fechamento

Informação do buffer é atualizada no disco

Área do buffer utilizada na memória é liberada

(7)

Modos de Arquivo

Dois modos de acesso:

Texto e Binário

Modo Texto:

É interpretado como uma seqüência de caracteres(char) agrupadas em linhas

Linhas são separadas por um caractere de nova linha

linha

Unidade básica: char Vantagens:

Pode ser lido facilmente por uma pessoa Editado por editores de texto convencionais

Desvantagens

Codificação dos caracteres pode variar (ASCII, UTF-8, ISSO-8859, etc)

Arquivos tendem a ser maiores (todas os dados são

convertidos para caracteres)

(8)

Exemplo miniJava.io.TextFile

public class TesteTextFile {

public static void main(String args[]) {

String str = "Testando a classe TextFile";

try {

TextFile arquivo = new TextFile("java.in", "java.txt");

arquivo.writeString(str);

arquivo.close();

} catch (FileNotFoundException e) {

Cria o objeto para manipular um

arquivo e o abre

Escreve uma

String no arquivo Fecha o

arquivo

} catch (FileNotFoundException e) {

MiniJavaSystem console = new MiniJavaSystem();

console.println("O arquivo não foi achado!");

} catch (IOException e) {

MiniJavaSystem console = new MiniJavaSystem();

console.println("Algum problema ocorreu.");

} }

}

String no arquivo

(9)

Modos de Arquivo

Modo Binário:

Dados são armazenados da mesma forma que são armazenados na memória principal

Pode permitir a escrita de objetos

Serializable

Unidade básica: byte Vantagens:

Vantagens:

Facilmente interpretados por programas Maior velocidade de manipulação

Arquivos são, geralmente, mais compactos

Desvantagem

Difícil de serem entendidos por pessoas (ilegíveis)

(10)

Exemplo miniJava.io.JavaFile

public class TesteJavaFile {

public static void main(String args[]) { Conta c1 = new Conta(123, "123-0");

try {

JavaFile arquivo = new JavaFile("java.in", "java.txt");

arquivo.writeObject(c1);

arquivo.close();

Escreve um objeto do

tipo Conta

arquivo.close();

} catch (FileNotFoundException e) {

MiniJavaSystem console = new MiniJavaSystem();

console.println("O arquivo não foi achado!");

} catch (IOException e) {

MiniJavaSystem console = new MiniJavaSystem();

console.println("Algum problema ocorreu.");

}

} }

tipo Conta

(11)

Modos de Acesso:

Seqüencial x Randômico

Acesso seqüencial

x y

início

Acesso randômico

x y

y x

início

início

(12)

TextFile e JavaFile acesso seqüencial Escrita contínua

RandomJavaFile Acesso randômico Qualquer lugar do arquivo

seek(long distancia)

Modos de Acesso:

Seqüencial x Randômico

seek(long distancia)

skipBytes(int distancia) Leitura (r) ex: readInt()

boolean byte char double int String … escrita (rw) ex: writeInt(int dado)

boolean char double int

(13)

Revisão do Tamanho dos Tipos Primitivos de Java

Qual o tamanho de um :

byte e boolean: 1 byte (8 bits)

char(Unicode) e short: 2 bytes (16 bits) char(Unicode) e short: 2 bytes (16 bits) int e float: 4 bytes (32 bits)

double e long: 8 bytes (64 bits)

(14)

public class TesteRandomJavaFile {

public static void main(String args[]) { Conta c1 = new Conta(123, "123-0");

Conta c2 = new Conta(456, "456-7");

MiniJavaSystem console = new MiniJavaSystem();

try {

RandomJavaFile arquivo = new RandomJavaFile("java.bin",

"rw");

Exemplo

miniJava.io.RandomJavaFile

"rw");

arquivo.writeInt(c1.getSaldo());

arquivo.writeInt(c2.getSaldo());

arquivo.writeString(c1.getNumero());

arquivo.writeString(c2.getNumero());

arquivo.close();

(...)

Indica abertura para leitura e

escrita

(15)

Exemplo

miniJava.io.RandomJavaFile

( ( (

(............))))

arquivo = new RandomJavaFile("java.bin", "r");

console.println("c1.saldo: " + arquivo.readInt());

console.println("c2.saldo: " + arquivo.readInt());

console.println("c1.numero: " + arquivo.readString());

console.println("c2.numero: " + arquivo.readString());

console.println("c2.numero: " + arquivo.readString());

arquivo.close();

} catch (FileNotFoundException e) {

console.println("O arquivo não foi achado!");

} catch (IOException e) {

console.println("Algum problema ocorreu.");

} }

}

(16)

Pacote java.io

java.io

InputStream OutputStream (abstratas) Leitura e escrita de streams de bytes FileInputStream FileOutputStream

FileInputStream FileOutputStream

leitura e escrita de bytes em arquivos DataInputStream/DataOutputStream

Escrita e leitura de tipos primitivos ObjectInputStream/ObjectOutputStream

Escrita e leitura de Objetos

(17)

Pacote java.io

Reader/Writer

Leitura e escrita de texto FileReader/FileWriter

Leitura e escrita de texto em arquivos Leitura e escrita de texto em arquivos BufferedReader/PrintWriter

Leitura e escrita de Strings

(18)

Filtros

Ler dados como bytes brutos é rápido, mas grosseiro;

Normalmente, lêem-se os agregados de bytes que formam int s, float s, double s...

que formam int s, float s, double s...

Algumas classes são capazes de ler um

conjunto de bytes e transformá-las para tipos

primitivos. (Ex.: RandomJavaFile)

(19)

Buffering

Transferência física de saída operação lenta se comparada com as velocidades do processador e da memória principal;

Armazenamento em buffer (buffering) Armazenamento em buffer (buffering) melhorias significativas de desempenho de entrada e saída;

flush() força o envio a qualquer momento;

(20)

Buffering

Escrita

Leitura

Arquivo

Arquivo

(21)

Buffering

(22)

Tipos Primitivos

(23)

Objetos

(24)

Considerações sobre arquivos

Sistema operacional mantém um “cursor” que indica a posição de trabalho no arquivo

Dados em muitos arquivos seqüenciais não podem ser modificados sem o risco de destruir parte desses dados Arquivo geralmente é regravado por inteiro;

Arquivos de acesso aleatório Modificação mais Arquivos de acesso aleatório Modificação mais fácil quando registros de tamanho fixo.

TextFile JavaFile RandomJavaFile

Arquivo de texto Arquivo binário Arquivo binário

Legível por humano Não legível por humano Não legível por humano

char byte byte

Acesso seqüencial Acesso seqüencial Acesso aleatório

Referências

Documentos relacionados

Na camada de controle de acesso a autenticação e controle de acesso RBAC são modularizados por um mecanismo – intitulado Heimdall – criado para este fim,

Portanto, mesmo percebendo a presença da música em diferentes situações no ambiente de educação infantil, percebe-se que as atividades relacionadas ao fazer musical ainda são

North America: A cable with a NEMA 15-5P plug is provided for use with the M2GO - M2PC in the USA and Canada.. This approved cable must be used in

Nas bases de dados SciELO e LILACS foram utilizados os descritores indexados no Descritores em Ciências da Saúde (DeCS terms) e foi realizada a seguinte estratégia: zumbido AND

8 Daniela Furtado Vieira Enfermagem (Ponta Delgada) 10,6 Não Colocado 9 Carolina Moniz Ferreira Enfermagem (Ponta Delgada) 10,2 Não Colocado 10 Sandra Paula Correia

O CES é constituído por 54 itens, destinados a avaliar: (a) cinco tipos de crenças, a saber: (a1) Estatuto de Emprego - avalia até que ponto são favoráveis, as

Com os resultados obtidos nas simulações, foram aplicados dois métodos diferentes de fixação dos sensores e estudada a deformação vertical da placa, quando sujeita a

Estudo transversal retrospectivo sobre a prevalência de anemia ferropriva em gestantes atendidas em um serviço de pré-natal de uma maternidade social do Município