Está en la página 1de 3

IntroducciónBloque 1Bloque 2Referencias

Flujos y archivos

Introducción

Los algoritmos de ordenamiento de vectores que se estudian o se proponen están limitados a una
secuencia pequeña de datos y asumen que dichos datos se almacenan en la memoria principal. Si
la cantidad de datos no cabe en la memoria, entonces no pueden aplicarse los algoritmos vistos. 

En la vida real, permanentemente nos encontramos con casos en los que esto sucede. Por ejemplo,
tenemos datos permanentes en un CD o en cintas de respaldo, y quizás deseamos ordenar los
datos que allí residen. Entonces, necesitamos ver otras técnicas que se complementen con las
técnicas usualmente encontradas en libros.

El ordenamiento externo se refiere al ordenamiento de archivos. Asumimos la existencia de grandes


volúmenes de datos y un tamaño de memoria limitado. Esto hace inviable el uso de la memoria
principal (memoria interna). El objetivo es reducir el número de accesos a los archivos. En esta
lectura estudiamos los archivos y cómo se accede a ellos en lenguajes de programación, como
Java, a través de flujos, para que en las lecturas posteriores podamos explicar los métodos de
ordenamiento externo.

1. Archivos 

Un archivo es una colección de datos guardados en un dispositivo de almacenamiento permanente.


Generalmente, estos datos están relacionados entre sí. Por ejemplo, podríamos tener un archivo de
una clase escolar que contiene un conjunto de registros de los estudiantes de esa clase (“Tipos de
archivo de acuerdo a su organización y operaciones sobre estos”, s. f.), de modo que también
podemos definir a un archivo como un conjunto de registros que poseen una marca de fin de archivo
(EOF, o End Of File). 

Hay dos tipos de acceso a los registros de un archivo, el acceso secuencial y el acceso directo. En
el acceso secuencial se sigue el orden de almacenamiento, es decir, se accede a un registro tras
otro. Un ejemplo de este tipo de acceso se da en las cintas. En el acceso directo se accede a un
registro determinado sin consultar los precedentes (“Tipos de archivo de acuerdo a su organización y
operaciones sobre estos”, s. f.). Esto se puede dar solamente en aquellos soportes que permiten
este tipo de acceso, tales como un disco o un CD. Este tipo de soportes se llaman soportes
direccionales.

2. Flujos 

Para que un programa pueda manejar un archivo en un dispositivo de almacenamiento permanente,


como, por ejemplo, un disco, primero debe crearse un flujo. Puede concebirse a un flujo como un
conducto a través del cual se transportarán los datos hacia o desde el dispositivo de
almacenamiento. Los datos fluirán entre la memoria RAM de la computadora y el dispositivo de
almacenamiento. Si los datos van a enviarse desde la memoria hacia el disco, se trata de un flujo de
SALIDA (output); si, por el contrario, los datos van a enviarse desde el disco hacia la memoria, el
flujo es de ENTRADA (o input). A las operaciones de ENTRADA se les conoce como de LECTURA
(o read); a las de SALIDA se les conoce como de ESCRITURA (o write). 

En la Figura 1 se esquematiza la relación existente entre los dispositivos de entrada/salida y los
flujos. 

Figura 1: Flujos y archivos en una computadora

Fuente: “Unidad 6: flujos y archivos”, 16 de mayo de 2014, https://itslr.edu.mx/archivos2013/TPM/temas/s2u6.html

Archivos y flujos en Java 


Los archivos en Java son simplemente una secuencia de bytes y representan los datos
almacenados. La clase File define métodos para conocer propiedades del archivo, tales como:
última modificación, permisos de acceso y tamaño. Esta clase usa la ruta completa incluyendo el
nombre del archivo, por ejemplo:

File miArchivo = new File(“C:\Almacen.dat”)


En Java, al abrir un archivo se crea un objeto que queda asociado a un flujo. Los programas leen o
escriben en el flujo, que estará conectado a un dispositivo u otro. El flujo se abstrae del dispositivo
real. En Java se crean 3 objetos flujo al comenzar la ejecución de un programa:

●    System.in: entrada estándar (teclado).


●    System.out: salida estándar (pantalla).


●    System.err: salida estándar de errores.


Java declara dos clases abstractas para flujos, InputStream y OutputStream. Para el caso de
archivos se usan las clases FileInputStream y FileOutputStream. Dichas clases leen y escriben bytes
en un archivo.

Los flujos están asociados a archivos que están en cualquier dispositivo. Por ejemplo, se puede
declarar un flujo que escribe en el archivo a.dat como sigue a continuación:

FileOutputStream mf = new FileOutputStream(“a.dat”)


Sin embargo, es una buena práctica pasarle al objeto flujo un objeto archivo a procesar, ya que esto
permite hacer controles previos sobre el archivo. Esto puede hacerse como se indica a continuación:

File miArchivo = new File(“a.dat”)
FileOutputStream mf = new FileOutputStream( miArchivo )

Referencias

Tipos de archivo de acuerdo a su organización y operaciones sobre estos. (s. f.). [Apunte de
cátedra]. Recuperado de http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/3/informatica3.pdf

Unidad 6: flujos y archivos. (16 de mayo de 2014). Tutorial de programación multiplataforma.


Recuperado de http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/3/informatica3.pdf

También podría gustarte