Você está aqui: Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Escrevendo e lendo tipos primitivos em um arquivo usando a classe RandomAccessFileQuantidade de visualizações: 8843 vezes |
A classe RandomAccessFile fornece muitos métodos para escrever e ler tipos primitivos em um arquivo. Esta dica detalha os principais e fornece alguns exemplos. Vamos começar com os métodos de escrita: writeBoolean(boolean v), writeChar(int v), writeDouble(double v), writeFloat(float v), writeInt(int v), writeLong(long v), writeShort(int v) e writeUTF(String str). Todos estes métodos são void e a maioria escreve seus valores como grupos de bytes. Algumas diferenças entre eles estão documentadas na API Java. Agora os métodos de leitura: 1) readBoolean() - retorna um boolean; 2) readChar() - retorna um caractere Unicode; 3) readDouble() - retorna um double; 4) readFloat() - retorna um float; 5) readInt() - retorna um inteiro de 32 bits com sinal; 6) readLong() - retorna um inteiro de 64 bits com sinal; 7) readShort() - retorna um inteiro de 16 bits com sinal; 8) readUnsignedShort() - retorna um inteiro de 16 bits sem sinal. Veja um trecho de código no qual usamos os métodos writeInt() e readInt() para escrever e ler inteiros em um arquivo: import java.io.*; public class Estudos{ public static void main(String[] args){ // uma instância de RandomAccessFile para leitura e escrita // se o arquivo não existir ele será criado try{ RandomAccessFile arquivo = new RandomAccessFile("C:\\java\\valores.dat", "rw"); // vamos escrever inteiros no arquivo arquivo.writeInt(38); arquivo.writeInt(7273); arquivo.writeInt(1200); arquivo.close(); } catch(FileNotFoundException fnfe){ System.out.println(fnfe.getMessage()); } catch(IOException ioe){ System.out.println(ioe.getMessage()); } // vamos fazer a leitura dos escritos gravados anteriormente try{ RandomAccessFile arquivo = new RandomAccessFile("C:\\java\\valores.dat", "r"); int tam = (int)(arquivo.length() / 4); // grupo de 4 bytes for(int i = 0; i < tam; i++){ System.out.println(arquivo.readInt()); } arquivo.close(); } catch(FileNotFoundException fnfe){ System.out.println(fnfe.getMessage()); } catch(IOException ioe){ System.out.println(ioe.getMessage()); } System.exit(0); } } É possível misturar os métodos de escrita e leitura dos tipos primitivos, mas, temos que ficar atentos para não tentarmos ler um int a partir de um arquivo que só contém booleans, por exemplo. Veja: import java.io.*; public class Estudos{ public static void main(String[] args){ // uma instância de RandomAccessFile para leitura e escrita // se o arquivo não existir ele será criado try{ RandomAccessFile arquivo = new RandomAccessFile("C:\\java\\valores.dat", "rw"); // vamos escrever um float arquivo.writeFloat(15.79f); // vamos escrever um boolean arquivo.writeBoolean(true); // vamos escrever um short arquivo.writeShort(132); arquivo.close(); } catch(FileNotFoundException fnfe){ System.out.println(fnfe.getMessage()); } catch(IOException ioe){ System.out.println(ioe.getMessage()); } // vamos fazer a leitura dos primitivos escritos // anteriormente try{ RandomAccessFile arquivo = new RandomAccessFile("C:\\java\\valores.dat", "r"); // vamos ler o float System.out.println(arquivo.readFloat()); // vamos ler o boolean System.out.println(arquivo.readBoolean()); // vamos ler o short System.out.println(arquivo.readShort()); arquivo.close(); } catch(FileNotFoundException fnfe){ System.out.println(fnfe.getMessage()); } catch(IOException ioe){ System.out.println(ioe.getMessage()); } System.exit(0); } } Não se esqueça que o ponteiro de arquivo é adiantado a cada leitura efetuada em um arquivo encapsulado por um objeto da classe RandomAccessFile. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |