Java RandomAccessFile Especifica o local para implementar a leitura e a escrita de arquivos
RandomAccessFile pertence à classe de leitura aleatória. Ele pode operar o conteúdo do próprio arquivo aleatoriamente e pode ler e gravar conteúdo no local especificado do arquivo, o que é muito conveniente em muitos casos.
RandomAccessFile é usado para acessar arquivos que contêm registros de dados. Você pode usar o método Seek () para acessar registros e ler e escrever. O tamanho desses registros não precisa ser o mesmo; No entanto, seu tamanho e posição devem ser conhecidos. No entanto, esta classe é limitada a arquivos operacionais.
RandomAccessFile não pertence às classes InputStream e OutputStream. De fato, além de implementar as interfaces DataAinput e DataOutput (DataAinputStream e DataOutputStream também implementam essas duas interfaces), ele não tem nada a ver com essas duas classes e nem sequer usa funções que já existem nas classes InputStream e OutputStream; É uma classe completamente independente, e todos os métodos (principalmente pertencem a si mesma) são escritos do zero. Isso pode ocorrer porque o RandomAccessFile pode se mover para frente e para trás no arquivo, portanto, seu comportamento é um pouco fundamentalmente diferente de outras classes de E/S. Em resumo, é uma classe separada que herda diretamente o objeto.
Basicamente, o modo de funcionamento do RandomAccessFile é combinar o DataAinputStream e o DataOutputStream e adicionar alguns de seus próprios métodos, como getFilePointer () para posicionamento, procedimento () para mover no arquivo e determinar o comprimento () para o tamanho do arquivo e skipbytes () para pular. Além disso, seu construtor também possui um parâmetro que indica se deve abrir o arquivo no modo somente leitura ("r") ou no modo de leitura-gravação ("rw") (exatamente o mesmo que o fopen () de c). Não suporta gravar apenas arquivos.
Somente o RandomAccessFile possui um método de busca de busca, e esse método é aplicável apenas a arquivos. BufferInputStream possui um método Mark (), que você pode usar para definir a marca (salve o resultado em uma variável interna) e, em seguida, chama RESET () para retornar a essa posição, mas sua função é muito fraca e não é muito prática.
Exemplo Código:
importar java.io.ioException; importar java.io.randomaccessfile;/** * RandomAccessFile pertence a uma classe de leitura aleatória e pode operar o conteúdo do próprio arquivo em si próprio e aleatoriamente, ou seja, você pode especificar o local para ler e gravar conteúdo * @Author Andy * */público RandomAccessFiletStest {public Public content * @author * */público ler(); } public static void write () lança ioexception {// Acesse o arquivo de maneira leitura-write aleatomaccessfile raf = new RandomAccessFile ("d: //test.txt", "rw"); Raf.WriteBytes ("Hello World!"); RAF.WRITEBOOLEAN (TRUE); Raf.WriteInt (30); RAF.Writedouble (3,56); raf.close (); } public static void read () lança IoException {RandomAccessFile RAF = new RandomAccessFile ("d: //test.txt", "r"); RAF.SEEK (12); // Defina a posição do ponteiro boolean booleanValue = raf.readboolean (); int intvalue = raf.readInt (); Double DoubleValue = Raf.readDouble (); RAF.SEEK (0); // Defina a posição do ponteiro para o início do arquivo byte [] bytes = novo byte [12]; for (int i = 0; i <bytes.length; i ++) bytes [i] = raf.readbyte (); // leia um byte por vez e atribua -o a bytes [i] string StringVe = new String (bytes); RAF.SKIPBYTES (1); // Pule um byte byte int intvalue2 = raf.readInt (); raf.close (); System.out.println (booleanValue); System.out.println (intvalue); System.out.println (DoubleValue); System.out.println (StringValue); System.out.println (intvalue2); }}Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!