Los programas usan variables para almacenar información: los datos
de+entrada, Los resultados calculados y valores intermedios generados a
lo largo del cálculo. lo habitual es organizar esa información en uno o
varios ficheros almacenados en algún soporte de almacenamiento
persistente.
Archivos desde el bajo nivel
Desde el punto de vista de más bajo nivel, podemos definir un archivo
(o fichero) como: Un conjunto de bits almacenados en un dispositivo, y
accesible a través de un camino de acceso (pathname) que lo identifica.
el criterio del conenitdo
cuando manipulamos archivos, distinguiremos dos clases
de archivos dependiendo del tipo de datos que contienen:
Los archivos de caracteres (o de texto) . Los archivos de
bytes (o binarios) Un fichero de texto
es aquél formado exclusivamente por caracteres y
que, por tanto, puede crearse y visualizarse usando
un editor. Las operaciones de lectura y escritura trabajarán
con caracteres.
Criterio de modo de acceso
Existe dos modos basicos de acceso a la informacion
contenida en una archivo : SECUENCIA y ACCESO
DIRECTO, en el modo secuencia la informacion del
archivo es una secuencias de bytes de manera que
para acceder al byte se debe haber accedido al
anterior i-1.
El modo de acceso directo nos permite acceder directamente a
la informacion del byte i-esimo.
Los Archivos desde Java
los distintos tipos de ficheros se diferencian por las clases que
usaremos para representarlos y manipularlos. su uso es algo
mas complejo que las clases de ACM, ya que su diseño se ha
realizado pensando en un uso industrial. Las clases se usan
en el tratamiento de ficheros estan ubicadas en el paquete
JAVA.IO por lo que deben ser importadas.
tratamiento de errores
las excepciones
son un mecanismo que permite a los
metodos indicar que algo " anomalo"
ha sucedido que impide su correcto
funcionamiento dse manera que
uqien los ha invocado puede
detectar la situacion erronea.
Muchas de las excepciones que
exiten en java es divir por 0, son
excepciones en tiempo de ejecucion
y no obliga a que el programador las
trate explicitamnete. las
denomindas excepciones
comprobadas que obligan al
programador que dentro del codigo
de un metodo invoca una
instruccion que puede lanzala a
declarar en la cabecera del metodo.
Tratamiento simplificado de excepciones
la idea intuitiva de esta construccion es: intenta ejecuta
esas instrucciones en caso de producirse un error en el
tratamiento de los ficheros, atrapa ese error y ejecuta el
codigo de correccion.
Lectura de ficheros secuenciales de texto
Contar aparticiones de diversas letras
leeremos cada uno de los caracteres
hasta llegar al ultimo. si los
caracteres se consideran
incrementar el contador asociad a
ese caracter. definimos las
constantes del fichero.
Sobre nombres de
archivos, caminos
de acceso y demas
A simple vista parece una tonteria pero es una de las
cosas que mas complica el codigo al trabajar sobre
los archivos , el motivo es que cada sistema
operativo usa convenciones diferentes para
referirse a un fichero.
Escritura de ficheros secuenciales de texto
La estrategia en este caso es: pedir una
cadena al usuario, recorrerla de atras
hacia adelante e ir escribiendo en el
fichero, los caracteres que vamos
encontrando y al final, cerrar el fichero.
El concepto de buffering
los buffers te dan un lugar en el que dejar
temporalmente las cosas hasta que esta lleno. cualquier
operacion que implique acceder a la memoria externa
es muy costosa por lo que es intentar reducir al maximo
las operaciones de lectura/escritura que realizamos.
crear un Howler a partir de un texto
no es mas que un correo que chilla, en
internet chilla al escribir en masyuscula, lo
que se hace es un programa tal que el texto
dado de un mail, lo "howlerice" y lo convierta
en mayusculas.
El problema de los saltos en linea
otro de los problemas al utilizar ficheros es que
estos utilizan diferentes caracteres para indicar el
final de una linea. un fin puede estar indicado por :
el caracter line-feed("\n"), el caracter carige
return("\r").el metodo de linea final es usando la
convencion del sistema operativo de la maquina.
Manipulacion de datos a bajo nivel
Tamaños de los tipos
primitivos en java
una de las ventajas en java es la
representancio de los datos ya que no
dependen ni de la arquitectura de la
maquina, ni de su sistema operativo. por eso ,
lo que diremos funcionara en cualquier
maquina y sistema operativo.
¿como recuperar el
evento a partir de
un array de bytes?
b & 0xFF
que es hacer un AND con un numero que
solamente tiene 1s en los ocho bytes
menos significativos. Asi el resultado
tiene todo ceros excepto en su byte menos
significativo, que tiene los bits como b.
B<<8
esta operacion desplaza hacia la derecha 8 bits
el byte b. como antes de hacer esa operacion
java convierte el byte en int y los bytes en
signos.
Archivos binarios de acceso directo
Los archivos de acceso directo estan presentados
por la clase java java.io.RandomAccessFile que
permite: Abrir un archivo en el que se pueda
solamente leer, como tanto leer como escribir. la
colocacion del ectura7escritura en el byte que
ocupa la posicion pos del archivo.
Uso tipico de archivos binarios de acceso directo
las posibiliades de mezclar operaciones de escritura con
operaciones de lectura , acceder a una posicion concreta del
archivo hacen el uso principal del acceso directo se implemente
algo muy parecido a los arrays, pero en memoria secundaria
concepto de registro
si queremos guardar un
archivo de acceso directo los
datos correspondientes a las
instancias de una clase para
poder acceder directamente a
cada una de las instancias de
una clase para poder acceder
directamente a cada una de las
instancias debemos hacer que
todas tengan igual longitud.
Ordenacion de archivos: el algoritmo MergeSort
es un procemiento muy habitual a realizar sobre
archivos es ordenarlos.Aunque para el caso de los
archivos de acceso directo podriamos aplicar los que ya
conocemos para ordenar vectores. El algoritmo
MergeSort permite ordenar un archivo , solamente
realizando lecturas y escrituras secuencias, por lo que es
muy eficiente en el uso de los archivos.
Idea basica del algoritmo
la idea detras del algoritmo es muy simple: ir
fusionando las partes ordenadas que contien el
fichero, hasta que todo el esta en una unica parte.