Ficheiros de acceso aleatorio

De MediaWiki
Revisión del 15:15 28 feb 2022 de Joselv (discusión | contribuciones) (Página creada con «= Ficheiros de acceso aleatorio = Accédese directamente a datos situados en calquera posición do ficheiro. Úsase a clase RandomAccessFile para este tipo de acceso. Os m…»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

Ficheiros de acceso aleatorio

Accédese directamente a datos situados en calquera posición do ficheiro. Úsase a clase RandomAccessFile para este tipo de acceso.

Os métodos máis usados son os seguintes:

  • void seek(Long pos): posiciona o punteiro na posición pos.
  • int skipBytes(int desprazamento): despraza o punteiro desde a posición actual o número de bytes indicados no desprazamento.
  • String readLine(): obtense unha cadea con todo o contido da liña actual.
  • int read(byte[] buffer, int offset, int lonxitude): este método ten varias versións dependendo dos parámetros de entrada. Úsase para obter un determinado número de bytes ou ata que se encha o buffer. Devolve -1 no caso de final de ficheiro.
  • write(int i): escribe no ficheiro un byte.
  • write(byte[] buffer, int offset, int lonxitude): con estes parámetros pode escribir todo o buffer ou indicarlle a partir de que posición e ata onde. Do mesmo xeito que lendo.

Para lectura e escritura máis cómoda (non hai que contar bytes) existen as versións de write() e read() de datos primitivos. Por exemplo:

  • writeBoolean(boolean b): escribe un byte que representa un booleano na posición/puntero do ficheiro.
  • double readDouble(): obtense un valor double do ficheiro.

Para a documentación completa: docOficial

Para crear obxectos desta clase fai falta un obxecto tipo File e indicarlle o modo de apertura. O modo de apertura é un String e pode ter estos valores:

  • “r”: modo só lectura.
  • “rw”: modo de lectura e escritura.
  • “rwd” e “rws”: modos máis seguros e síncronos para evitar a perda de información frente a fallos de sistema ou comunicación. As operacións son máis lentas.

Posible exemplo de crea un obxecto: File f = new File ("/ficheiros/personas.dat"); RandomAccessFile ficheiro = new RandomAccessFile(f, "rw");

Os rexistros non teñen que ser do mesmo tamaño, pero o seu tamaño e posición. Con esta clase recorda que podemos movernos hacia diane e hacia atras, é moi diferente á forma de traballar de anteriores puntos onde se percorría sempre de inicio a fin.

A continuación amósase un exemplo sinxelo de escritura/lectura e posicionamento de datos double:

Exemplo→ EscribirAle.java

No seguinte exemplo amósase a xestión que hai que facer cos tamaños de diferentes tipos de datos:

Exemplo→ AleCompleto.java