Definicin, Tipos y Componentes Manejo de Campos y Registros Transferencia de Datos
Definicin: Objeto que contiene una secuencia de bytes que termina con EOF
Lo que da sentido a dicha secuencia de bytes, son las estructuras de datos que construimos para trabajar con ellos
Representacin grfica:
Apuntador a datos Secuencia flujo de bytes
EOF
Inicio del archivo Indicador de posicin Fin del archivo
De Texto 2. Binario
1.
Cadena de caracteres alfanumricos y smbolos especiales Si se almacenan nmeros, hay que darles formato, signo longitud y precisin Portable no depende de la manera en se representan los datos en cada arquitectura
Los datos se escriben con el mismo formato en que se encuentran en memoria principal Se debe elegir el tipo de dato que corresponda al rango de valores a manipular Pueden contener instrucciones ejecutables
Campo = atributo Registro = conjunto de campos o atributos de una entidad
Archivo = conjunto de registros en medio secundario
Su valor identifica a cada registro Tipos de Llave: Primaria. De manera exclusiva Secundaria. De manera no exclusiva
1.
Comenzar con un indicador de longitud (bytes)
2.
3.
Terminar con un separador (carcter invlido)
Escribirlo como descriptor = valor (incremento de hasta el 50%)
AtrrEntero AtrrCadena AtrrLgico
Para campos de longitud variable Fcil recuperacin Si (longitudMxima < 256 bytes) solo ocupa un byte adicional por campo
Se debe distinguir fcilmente del resto de los caracteres No debe interferir en el procesamiento
Descriptor o atributo Requiere separadores Usar descriptores cortos
AtrrEntero AtrrEntero
AtrrCadena AtrrCadena
AtrrLgico AtrrLgico
A.
Comenzar con un Indicador de longitud (bytes o campos) Terminar con un separador
B.
C.
Utilizar un Archivo ndice
Registros de longitud variable Fcil Recuperacin Problemas de espacio (desperdiciado o insuficiente)
Diferente al de los Campos
Segundo archivo que almacena la llave primaria y la posicin de inicio de cada registro en el archivo de datos
Ubica a cada registro y se puede calcular su longitud
Fragmentacin Sistema de Archivos (bytes) Disco Cache Mapeo de la Memoria Mltiples Sistemas de Archivos
Utilizar un Sector para cada registro o un Cluster para cada archivo facilitara la ubicacin pero se desperdiciara espacio
Dispersar (fragmentar) registros y archivos evita el desperdicio pero implica darle seguimiento a cada porcin de datos
El Sistema Operativo
Ensambla un bloque de registros cuando se escriben o bajan Separar registros de un bloque cuando se leen o suben Proceso transparente para el usuario
Las instrucciones ejecutables del software, manipulan registros, no bloques
Es la parte del SO que Transfiere:
Registros desde/hacia el software Bloques desde/hacia el almacenamiento secundario
Almacenamiento oculto en un Buffer (rea de memoria primaria) muy grande donde se almacenan sectores ledos (muchos bloques de datos, muchos registros)
Cuando se lee un archivo, el bloque que contiene el registro solicitado y otros bloques se almacenan en la memoria cache en una sola operacin fsica incrementando la velocidad de un proceso
Tambin pueden ser localidades dedicadas de alta velocidad en memoria secundaria Efectivo para manejo secuencial poco til para procesos aleatorios
Registro
Bloque
Aplicacin del usuario
Registro Registro Registro Registro Registro Registro Registro Registro
Bloque Bloque Bloque Bloque Bloque
N Bloques en cache
M archivos en medio secundario
Dividir la Memoria Primaria (MP) en segmentos de igual tamao o pginas
Pg 1
Pg 9 Pg 7 Pg 2
Pg 6
Se guardan en Memoria Secundaria (MS) de rpido acceso Cuando se requiere un bloque que no est en MP se sube del medio secundario
Aplicaciones de Software Funciones de biblioteca Sistema de archivos Sistema operativo Micro-instrucciones en Ensamblador Hardware
Unix GNU. rbol Recursivo de directorios y subdirectorios o archivos con permisos de acceso De red. Distribuidos o Paralelos Virtual. Interfaz entre el ncleo del usuario y un sistema de archivos diferente
Creacin, Apertura y Cierre Manipulacin de Registros
Instrucciones al SO para que, por medio de un identificador (apuntador o referencia), enlace el archivo lgico a manipular en una aplicacin y el archivo fsico en almacenamiento secundario
Libera el identificador de un archivo lgico para que se pueda re-utilizarse con otro archivo fsico Garantiza que toda la informacin enviada al archivo lgico quede almacenada en el archivo fsico
Lectura Escritura Altas, Bajas, Cambios, Consultas
fstream ptrFile; //Identificador ptrFile.open(nomArchivo.TXT", ios::app); //Creacin ptrFile<<orgen<<endl; //Escribe Origen en NomArchivo ptrFile.close(); //Cierre ptrFile.open(nomArchivo.TXT, ios::in); //Apertura ptrFile.getline(destino,MAX,\n) //Lee en destino una lnea de NomArchivo ptrFile.close(); MODO in. Lectura trunc. Reescribe
out . Escritura binary . Binario
app .Aade
void CPrueba::escritura(){ fstream arch; arch.open(D:\EQUIPOS.TXT",ios::out); if (arch.fail()) cout<<"\n ERROR!!!"; else { arch.write( (char *)equipos, sizeof(CEquipo) * MAX); cout<<"\N ESCRIBIENDO EN MEDIO SECUNDARIO"; getch(); arch.close(); } }
int CPrueba::lectura){ int i; fstream arch1; arch1.open(D:\EQUIPOS.TXT",ios::in); if (arch1.fail()){ cout<<"\n ERROR!!!; return 0; } for (i=0; !arch1.eof() && i <= MAX; i++ ) arch1.read( (char *) &equipos[i], sizeof(CEquipo) ); arch1.close(); return (i-1); }
void CGaleria::escritura(int i){ ofstream arch("C:\GALERIA.DAT"); if (arch.fail()) cout<<"\n ERROR!!!"; else {
arch.write( (char *)Obras, sizeof(CObra)*i );
cout<<"\n ESCRIBIENDO EN MEDIO SECUNDARIO;
arch.close(); } }
int CGaleria::lectura(){ int i; ifstream arch1("C:\GALERIA.DAT"); if (arch1.fail()){ cout<<"\n ERROR!!!; return 0; } for (i=0; !arch1.eof(); i++ ) arch1.read( (char *) &Obras[i], sizeof(CObra) ); arch1.close(); return (i-1); }
CONSTRUCTORES:
File nomArchivo; nomArchivo= new File (ruta); nomArchivo = new File(ruta,subruta); File nomCarpeta = new File(ruta); nomArchivo = new File(nomCarpeta,subruta);
METODOS DE LA CLASE File DE JAVA
boolean canRead() boolean canWrite() File getParentFile() String getPath() boolean isDirectory() boolean isFile() boolean isHidden() long lastModified() boolean renameTo(File dest) boolean setReadOnly()
import java.io.*; /** Adaptacin Lewis & Loftus. Dra. Silvia Gonzlez Brambila */ public class PruebaDatos{ public static void main (String [] args) throws IOException { final int MAX = 10; int valor; String arch = "prueba.dat"; FileWriter fw = new FileWriter (arch); BufferedWriter bw = new BufferedWriter (fw); PrintWriter salArch = new PrintWriter (bw); for (int i = 1; i <= MAX; i++){ for (int n = 1; n <= MAX; n++) { valor = (int) (Math.random () * 100); salArch.print (valor + " "); } salArch.println (); } salArch.close (); System.out.println ("El archivo de salida ha sido creado: " + arch); }}
import java.io.*; public class ChecaDatos{ public static void main (String [] args) throws IOException String arch = "prueba.dat; String lnea; FileReader fr = new FileReader (arch); BufferedReader entArch = new BufferedReader (fr); lnea = entArch.readLine (); while (lnea != null) { System.out.println (lnea + "\n"); lnea = entArch.readLine (); } entArch.close (); } } {
Arreglo de Objetos Escribirlo en Leer en otro arreglo de objetos desde archivo en medio secundario (el segundo arreglo deber mostrarse en pantalla)
Equipo de dos personas, fecha mxima de entrega martes 27 de septiembre