30.06.2013 Views

Apostila Java

Apostila Java

Apostila Java

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

eferenciar um arquivo, evitando problemas de dependência à organização dos arquivos no sistema em<br />

que a máquina virtual está rodando. E lembre-se de usar sempre a barra invertida '\' como separador de<br />

diretórios. É fortemente recomendado que você leia a documentação da classe <strong>Java</strong>.io.File acerca das<br />

facilidades de manipulação das informações sobre o conteúdo e as características básicas dos arquivos.<br />

Manipulação de arquivos randômicos<br />

Um dos problemas do uso de arquivos seqüenciais é a necessidade de ler ou escrever todo o conteúdo<br />

desses arquivos, mesmo que um determinado processo necessite apenas de uma parte de seu<br />

conteúdo. Imagine que você tenha um arquivo texto com quinhentos nomes, e precise verificar o<br />

centésimo nome – nesse caso, você terá que ler 99 nomes desnecessários até obter a informação que<br />

necessita. O ideal, nesse caso, é manipular arquivos como se fossem bancos de dados, ou seja, ter a<br />

capacidade de acessar um dado em uma posição específica dentro do arquivo, sem a necessidade de<br />

percorrer o resto desse arquivo. <strong>Java</strong> provê classes para a manipulação de arquivos de acesso<br />

randômico, ou seja, arquivos que possuem um ponteiro (file pointer) que permite a localização dos<br />

dados dentro do arquivo.<br />

Para manipular um arquivo de acesso randômico, constrói-se um objeto da classe<br />

java.io.RandomAccessFile, passando como parâmetro um objeto do tipo File:<br />

File arquivo = new File("origem.txt");<br />

RandomAccessFile manipulador = new RandomAccessFile(arquivo, "rw");<br />

Note que o primeiro argumento do construtor do manipulador de arquivos randômicos é a referência ao<br />

arquivo, enquanto o segundo argumento é o tipo de acesso que será utilizado:<br />

r Read Only, significando que o acesso ao arquivo será apenas para leitura<br />

rw Read and Write, significando que o acesso permite a leitura e/ou modificação do conteúdo do<br />

arquivo.<br />

Como a classe RandomAccessFile implementa as interfaces DataInput e DataOutput, o acesso aos<br />

dados de um arquivo de acesso randômico é feito através dos métodos definidos nessas interfaces,<br />

basicamente read() e write(). Leia a documentação da classe java.io.RandomAccessFile para a<br />

completa descrição dos método de leitura e escrita, bem como os parâmetros desses métodos.<br />

O posicionamento da leitura ou escrita em arquivos randômicos é ajustado ou reconhecido através de<br />

dois métodos:<br />

void seek(long)<br />

long getFilePointer()<br />

long lenght()<br />

O método seek ajusta o ponteiro do arquivo a uma determinada posição, considerando o intervalo padrão<br />

do arquivo, que pode ser o tamanho de um tipo de dado ou definido pelo programador. O método<br />

getFilePointer retorna a posição atual desse ponteiro, e o método lenght retorna o tamanho total do<br />

arquivo. Exemplo de posicionamento em um arquivo de acesso randômico:<br />

// Criando a referência ao arquivo de acesso randômico<br />

File arquivo = new File("vendas.log");<br />

123

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!