Un archivo texto se almacena en una secuencia de caracteres que corresponden a
la tabla estndar de caracteres ASSCII. En tanto en un archivo binario los datos se guardan tal y como son almacenados en la memoria del computador. Para el caso de los archivos de tipo texto el computador realiza la tarea de traducirlos a lenguaje mquina, procesarlos y luego volver a traducirlos a tipo texto para mostrar transparencia al usuario. En los archivos binarios el proceso de traduccin no se da, por lo que los datos son procesados directamente por la mquina, esto significa una economa de espacio (en memoria) y un incremento en la velocidad de procesamiento de la informacin (tiempo). De todo esto se concluye que para el manejo de grandes volmenes de informacin en archivos, el modo binario es preferible al modo texto. En un archivo tipo texto el acceso a la informacin es secuencial; es decir desde el inicio del archivo hasta el final, o hasta conseguir la informacin deseada. En cambio en el modo binario el acceso adems de secuencial, puede hacerse de modo aleatorio, debido a que la informacin se guarda en registros pudiendo accederse directamente a cualquiera de los i-registros del archivo, sin necesidad de pasar por los registros anteriores. A esto se le conoce tambin como acceso directo o acceso aleatorio. En un archivo binario la informacin se almacena en paquetes de n-bytes de tamao cada uno. Cada paquete proviene de una estructura (struct) o registro, o de una clase (class). GESTION DE ARCHIVOS BINARIOS EN C++ Para gestionar archivos en modo binario en C++ se requiere declararlos de modo explcito mediante la directiva ios::binary. Al respecto se tiene: 1. Declaracin: Lectura y escritura: ifstream lee_bin; // objeto para lectura ofstream escribe_bin; // objeto para escritura 2. Apertura: se usa la funcin open() para asociar el flujo de archivo con un objeto fsico lee_bin.open( datos.dat, ios::in | ios::binary); escribe_bin.open( datos.dat, ios::out | ios::binary ); 3. Cierre del flujo: se usa la funcin close() lee_bin.close(); escribe_bin.close(); 4. Aadir datos: se utiliza el modo app escribe_bin.open(datos.dat,ios::out|ios::app|ios::binary ); NOTAS: Por convenio se acostumbra 1. La extensin de los archivos modo texto es: *.txt, *.doc 2. La extensin de los archivos modo binario es: *.dat, *.bin
FUNCIONES PARA LEER Y ESCRIBIR EN MODO BINARIO
C++ proporciona las funciones write (escribir) y read (leer) que son de uso exclusivo en archivos de modo binario. Para leer o escribir en modo binario existen dos maneras: 1. Modo clsico (valido en C y C++) escribe.write((char* )&dato, sizeof dato); leer.read((char* )&dato, sizeof dato); 2. Modo moderno (valido solo en C++) escribe.write(reinterpret_cast <const char*>(&dato), sizeof(dato)); leer.read(reinterpret_cast <char* >(&dato), sizeof(dato));