miércoles, 9 de mayo de 2012

Archivos y flujos


Antes de entrar al análisis de lo que son los archivos y flujos en java deberemos tener en claro algunos conceptos importantes. Entre los conceptos que vamos a analizar están los siguientes.

¿Qué es un archivo o fichero?

En términos informáticos, un archivo es un grupo de datos estructurados que son almacenados en algún medio, los cuales pueden ser usados por aplicaciones.

 Características de los archivos.

Entre las características que los archivos (informática) se encuentran los siguientes:

Nombre y extensión.-  Cada una de los archivos es individual y este es identificado por un nombre y una extensión, esta ultima nos ayuda a identificar el formato del archivos

  • Datos sobre archivo.- Además de los datos anteriormente analizados cada archivo según el sistema de archivos se guarda también algunos datos adicionales como: fecha de creación, fecha de modificación y fecha de ultimo acceso, y algunas propiedades como: oculto, de sistema, de solo lectura.

  • Tamaño.- Los archivos también poseen un tamaño el cual pueden ser medido en byte, kilobytes, megabytes, etc., este tamaño dependerá de la cantidad de caracteres que este contenga.
  • Ubicación.- Todo archivo pertenece a un directorio o subdirectorio. Esta ubicación suele comenzar con la unidad de lógica que lo contiene y posteriormente encontraremos los subdirectorios hasta llegar al directorio contenedor del archivo.
Flujo.- En informática se puede decir que un flujo es un conjunto de clases que son las encargadas de la administración de los ficheros. Mas adelantes se analizaran mas a fondo algunas de estas clases.

Una vez que se han analizados estos conceptos podemos adentrarnos mas en el estudio de los ficheros o archivos en informática.

En java a los archivos se los considera a cada archivo como un flujo secuencial de bytes. Ahora en cada sistema operativo podemos encontrar una manera diferente de identificar el fin de archivo.

En algunos casos el fin de archivo se da por una excepción y en otros en cambio se da debido a un valor de retorno de un método invocado en un objeto manejador de flujos

Los flujos de archivos se pueden usar tanto para la entrada o para la salida de datos. Los flujos que reciben y envían bytes a archivos se les conoce como: flujos basados en bytes y el almacenamientos de los datos se da en formato binario; en cambio los flujos que reciben y envían caracteres del/a los archivos se les conoce como flujos basados en caracteres y el almacenamiento se realiza mediante una secuencia de caracteres.

Los archivos que se crean usando flujos basados en bytes se conocen como archivos binarios. Los archivos que se crean usando flujos basados en caracteres se les conoce como archivos de texto.

Los programas en java realizan la apertura de un archivo creando un objeto el cual se asociara a un flujo de bytes o caracteres. El lenguaje de programación java crea tres objetos flujo los cuales se asocian con dispositivos cuando un programa java empieza su ejecución; estos son: System.in, System.out, System.err.

System.in.- Es aquel que permite a un programa recibir bytes desde teclado.
System.out.- Es aquel que permite a un programa mostrar datos por pantalla.
System.err.- Es aquel que permite a un programa mostrar un mensaje de error en la pantalla.  

Claro que no siempre se aplica las definiciones antes descritas ya que cada uno de estos flujos tiene la capacidad de redirigirse. Es así como System.in tiene la capacidad de leer bytes desde un origen distinto, los otros 2 en cambio pueden permitir que la salida se envié a una ubicación distinta, como por ejemplo a un archivo en disco. La clase System proporciona algunos métodos para la redirección de flujos estándar de entrada, salida y error como son: setIn, setOut y setErr.

El manejo de los archivos en java se da gracias a las clases del paquete java.io el cual posee definiciones para las clases de flujos como las siguientes:
·         FileOutputStream
·         FileReader
·         FileWriter

Todos los archivos se abren gracias a que se crean objetos de estas clases de flujos, que heredan de las siguientes clases:
·         InputStream
·         OutputStream
·         Reader
·         Writer

Para la realización de entrada y salida de datos pueden usarse objetos de las clases siguientes:
·         ObjectInputStream
·         ObjectOutputStream
·         FileInputStream
·         FileOutputStream

Para las operaciones de entrada y salida que se basan en caracteres se las puede llevar a cabo con las siguientes clases:
·         Scanner
·         Formatter

La primera se usa en forma extensa la cual recibe datos desde teclado, claro que también puede ser usada para leer datos desde archivos; la segunda en cambio permite la visualización de datos con formato por pantalla o enviarlos a un archivo.

Bibliografía.
  • Deitel P, Deitel H (2008). Java como programar. México: Pearson Prentice Hall.
  • Diccionario de Informativa (s.f). Recuperado el 10 de Abril del 2010, de http://www.alegsa.com.ar/Dic/archivo.php
  • Martínez A; Ramón Jiménez J (s.f). Flujos en Java Programación Orientada a Objetos. Recuperado el 11 de Abril del 1012 de http://uamisoft.izt.uam.mx/dokuwiki/lib/exe/fetch.php?media=amm:cursos:poo:07-p:sem11flujos.pdf

No hay comentarios:

Publicar un comentario