Acabamos de mencionar los pasos fundamentales para proceder con ficheros: abrir, operar, cerrar.
Además de esas consideraciones, debemos tener en cuenta también las clases Java a emplear, es decir, recuerda que hemos comentado que si vamos a tratar con ficheros de texto, es más eficiente emplear las clases de Reader
Writer
, frente a las clases de InputStream
y OutputStream
que están indicadas para flujos de bytes.
Otra cosa a considerar, cuando se va a hacer uso de ficheros, es la forma de acceso al fichero que se va a utilizar, si va a ser de manera secuencial o bien aleatoria. En un fichero secuencial, para acceder a un dato debemos recorrer todo el fichero desde el principio hasta llegar a su posición. Sin embargo, en un fichero de acceso aleatorio podemos posicionarnos directamente en una posición del fichero, y ahí leer o escribir.
Aunque ya has visto un ejemplo que usa BufferedReader
, insistimos aquí sobre la filosofía de estas clases, que usan la idea de un buffer.
La idea es que cuando una aplicación necesita leer datos de un fichero, tiene que estar esperando a que el disco en el que está el fichero le proporcione la información.
Un dispositivo cualquiera de memoria masiva, por muy rápido que sea, es mucho más lento que la CPU del ordenador.
Así que, es fundamental reducir el número de accesos al fichero a fin de mejorar la eficiencia de la aplicación, y para ello se asocia al fichero una memoria intermedia, el buffer, de modo que cuando se necesita leer un byte del archivo, en realidad se traen hasta el buffer asociado al flujo, ya que es una memoria mucho más rápida que cualquier otro dispositivo de memoria masiva.
Cualquier operación de Entrada/Salida a ficheros puede generar una IOException
, es decir, un error de Entrada/Salida. Puede ser por ejemplo, que el fichero no exista, o que el dispositivo no funcione correctamente, o que nuestra aplicación no tenga permisos de lectura o escritura sobre el fichero en cuestión. Por eso, las sentencias que involucran operaciones sobre ficheros, deben ir en un bloque try
.
Es la posibilidad de acceder a un elemento arbitrario de una secuencia de datos en el mismo tiempo.
Consiste en un tipo de almacenamiento permanente, no volátil, a diferencia de la memoria principal del ordenador que sí es volátil, pero posee mayor capacidad de almacenamiento que la memoria principal, aunque es más lenta que ésta.