• Nenhum resultado encontrado

Arquivos

N/A
N/A
Protected

Academic year: 2021

Share "Arquivos"

Copied!
28
0
0

Texto

(1)

Aprendendo a Manipular

Arquivos

ALBERTO WILLIAN MASCARENHAS

http://sites.google.com/site/awmascarenhas/

[email protected]

(2)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Aprendendo a Manipular Arquivos

JAVA =

facilidade na leitura e gravação de arquivos.

Não precisa se preocupar em qual sistema

operacional sua aplicação estará rodando

(3)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Aprendendo a Manipular Arquivos

Sendo Java uma linguagem

orientada a objetos

,

nada mais claro que utilizar classes e instâncias

delas (objetos) para lidar com a saida e entrada

de dados (input/output, abreviado: io).

(4)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

java.io.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.

(5)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

java.io.File

Por exemplo, o código a seguir cria uma instância da

classe mencionada, que aponta para

/usr/guj/arquivo.txt:

(6)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

E o código a seguir um caminho para o arquivo

arquivo.txt que estará no diretório atual do

sistema e ../arquivo.txt que estará no diretório

pai do atual.

(7)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Dica: No caso do sistema operacional windows, você

deve usar duplas barras invertidas (\\), já que uma

barra invertida apenas é considerado escape pelo java!

Dica: Em java, você NÃO tem como alterar o diretório

atual, por isso pode criar instâncias da classe File que

apontam para lugares relativos, mas sempre ao

diretório inicial, veja o exemplo abaixo:

(8)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Existem outras maneiras de criar caminhos relativos,

por exemplo:

(9)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Dica: É importante saber que criar um

ponteiro para um caminho no sistema

operacional não significa criar o

arquivo/diretório. As instanciações do código

apresentados iriam funcionar mesmo se você

não possuísse esses arquivos, porém não irão

apontar para um arquivo/diretório existente.

(10)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

O primeiro passo é descobrir se uma instância da

classe java.io.File aponta para algo que existe,

para um diretório ou arquivo.

Os três métodos úteis nesse momento são:

(11)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Outros métodos que podem ser úteis para

checar a viabilidade de leitura e gravação são:

(12)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

métodos de criação de diretórios

O primeiro o que cria um diretório

segundo cria todos os diretórios necessários para

chegar no caminho apontado pelo objeto. Esses

costumam ser muito utilizados:

(13)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

E outros métodos comuns são:

Aprendendo a Manipular Arquivos

Todos os nomes são auto explicativos. Qualquer coisa,

consulte a API da

classe File

, já que esta será sua

(14)

java.io.FileWriter

java.io.PrintWriter

(15)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Para escrever (e ler de) em um arquivo

precisamos saber que Java tem duas camadas

de io. Um baixo que lê e escreve bytes e um

alto que escreve e lê caracteres.

Aprendendo a Manipular Arquivos

java.io.FileWriter

e

java.io.PrintWriter

Arquivos que contém caracteres Unicode

ASCII-8

(16)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Vamos estudar os de alto nível, juntamente com algum

encapsulando por cima deste, pois o de alto nível

mexe com chars, e o que encapsula mexe com tudo!

O escritor de caracteres que iremos usar será uma

instância da classe java.io.FileWriter:

Aprendendo a Manipular Arquivos

(17)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Repare que as duas primeiras linhas obtém o

mesmo resultado que a terceira e a quarta, pois

existem construtores para objetos do tipo File e

String.

Dica: Se você especificar um segundo parâmetro

como true (primeira e terceira linha), você pode

dizer que deseja adicionar dados a um arquivo

que já existe em vez de sobregravar esse arquivo

(modo append).

Aprendendo a Manipular Arquivos

(18)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Dica: especificando o segundo parametro como

true

,

os dados serão enviados para o arquivo a toda

chamada do método println(), caso contrário, os dados

só são enviados quando você enviar uma quebra de

linha, fechar o arquivo ou mandar ele atualizar as

mudanças (modo autoflush).

Aprendendo a Manipular Arquivos

(19)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Exemplo:

desejamos escrever Strings para o arquivo

utilizando uma instancia da classe

java.io.PrintWriter que fornece as funcoes

print() e println().

Aprendendo a Manipular Arquivos

(20)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Repare que você utiliza um objeto da classe

java.io.PrintWriter sempre! o

System.out

é uma

instância desta classe, obviamente encapsulando

uma outra Stream. Agora você já pode escrever

no arquivo que abriu:

Aprendendo a Manipular Arquivos

(21)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Por fim, você deve fechar o arquivo na ordem

contrária que abriu, por segurança:

Aprendendo a Manipular Arquivos

java.io.FileWriter

e

java.io.PrintWriter

Dica: Nunca se esqueça de fechar esses objetos, que liberam

recursos para o sistema. Esperar pelo Garbage Collector (GC)

pode ser a diferença da sua aplicação rodar rápido ou não!

(22)

java.io.FileReader

java.io.BufferedReader

(23)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

O leito de caracteres que iremos usar durante a leitura

será uma instância da classe java.io.FileReader:

Aprendendo a Manipular Arquivos

java.io.FileReader

e

java.io.BufferedReader

Como no exemplo de escrita, as duas linhas acima

possuem o mesmo resultado.

(24)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Dica: você pode especificar o tamanho do buffer desejado

no segundo parâmetro. Esse buffer é utilizado para

minimizar o número de pedidos de io para ler blocos

maiores do arquivo de uma vez só. Aumentando esse

número diminui os acessos a disco, mas aumenta o

consumo de memória!

Aprendendo a Manipular Arquivos

(25)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Agora, instanciamos um objeto da classe

java.io.BufferedReader que fornece a função

readLine() e algumas outras, para agilizar o

trabalho.

Aprendendo a Manipular Arquivos

(26)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

E não se esqueça de fechar os dois objetos:

Aprendendo a Manipular Arquivos

(27)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

Você pode utilizar a classe BufferedWriter para

agilizar também o processo de gravação:

Aprendendo a Manipular Arquivos

java.io.BufferedWriter

Caso voce não utilize um objeto BufferedWriter no meio, você

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

(28)

ALBERTO WILLIAN MASCARENNHAS

http://sites.google.com/site/awmascarenhas/ [email protected]

CRÉDITOS (texto e código)

Aprendendo a manipular arquivos

Guilherme Silveira

http://www.guj.com.br/article.show.logic?id=13

Referências

Documentos relacionados

MATEUS VALÉRIO DA COSTA JOÃO PAULO SOUZA MADEIROS DANIEL DE SOUZA MEDEIROS RITA DE CÁSSIA SILVA OLIVEIRA DANIELA YASMIM MORAIS COSTA DALIELMA VANESSA DA SILVA JOÃO VITOR

Como podemos observar nas Tabelas 1, 2 e 3, as diferenças encontradas entre os dois grupos de crianças estudadas, respecti- vamente, nos municípios de Leme, Campinas e Capivarí,

Não, você não é lindo e sua vida não é perfeita, mas dá para ser feliz mesmo assim. Essa é a adorável mensagem que o filme O Fabuloso Destino de Amélie Poulain, do diretor

Podemos também criar um usuário com diretório já existente. Isto é útil para fazer com que vários usuários compartilhem um mesmo diretório.. exemplo: #adduser –d publico

Por exemplo, para criar um diretório em /tmp com o nome de teste que será usado para gravar arquivos de teste, você deve usar o comando "mkdir /tmp/teste".. • Podem

1 Unidade Intermédia Médico-Cirúrgica, Serviço de Cuidados Intensivos, Centro Hospitalar do Porto - Hospital de Santo António.. 2 Autor correspondente:

Prazo para interpor recurso contra o resultado parcial das perícias multiprofissionais dos pré-matriculados na Chamada Regular, por meio do item “recurso questionário”

Esta ver- são não cita nenhum aprendizado exógeno, apenas enfatiza a hostilida- de entre as distintas referências (a mãe do protagonista que vê o jacaré como predador e o ameaça) e