You are on page 1of 19

OBJETIVO

El objetivo de la presente sesión es:

✓ Conocer acerca del archivo binario


✓ Uso del operador reinterpret_cast
✓ Escritura datos en el archivo mediante write
✓ Leer datos desde el archivo mediante read
✓ Acceso directo a un archivo
✓ Ejemplo de aplicación

ING. FELIX HUARI 1


ARCHIVOS BINARIOS

La información contenida en el archivo no es legible


para el usuario
El proceso de lectura y escritura es mas rápido, ya que
la grabación en el archivo es directamente a partir del
contenido de la memoria
Un archivo binario ocupa menos espacio en el disco
que un archivo tipo texto
Este tipo de archivo es menos “vulnerable”
Todas las funciones vistas en archivo tipo texto son
válido en un archivo binario

ING. FELIX HUARI 2


ARCHIVOS BINARIOS
Para abrir un archivo binario es usa el manipulador binary
en la función open

❑ Ejemplo

ofstream file;
fstream arch;
file.open(“costos.dat”, ios::binary);
arch.open(“leyes.dat”, ios::out | ios::in | ios::binary);

ING. FELIX HUARI 3


ARCHIVOS BINARIOS
OPERADOR reinterpret_cast
C++ proporciona este operador para realizar
conversiones mediante cast no standard o conversión
cast standard.
La sintaxis es la siguiente:

reinterpret_cast <char *> o ( char * )

Se sugiere utilizar estas con una macro


La misma es utilizada con las instrucciones read y write

ING. FELIX HUARI 4


ARCHIVOS BINARIOS
LECTURA DE DATOS
Sentencia read.-Usado para leer datos desde el archivo
y almacenar en las variables de memoria
La sintaxis es la siguiente:

<Nombre Objeto>.read((reinterpret_cast <char *> )&variable, num);

leer Mem.
Ram
Donde:
num: es la cantidad de bytes que lee del archivo

ING. FELIX HUARI 5


ARCHIVOS BINARIOS
❑ EJEMPLO

Leer el primer byte de un archivo

#include <fstream>
int main()
{ ifstream f1;
char c;
f1.open(“Alfa.dat”,ios::binary);
f1.read(reinterpret_cast <char *>&c, sizeof(char));
}

ING. FELIX HUARI 6


ARCHIVOS BINARIOS
ESCRITURA DE DATOS
Sentencia write.-Usado para escribir o grabar en el
archivo los datos que están en la memoria
La sintaxis es la siguiente:

<Nombre Objeto>.write((reinterpret_cast <char *> )&variable, num);

escribir Mem.
Ram
Donde:
num: es la cantidad de bytes que escribe en el archivo

ING. FELIX HUARI 7


ARCHIVOS BINARIOS
❑ EJEMPLO

Escribir un byte en un archivo

#include <fstream>
int main()
{ ofstream f1;
char c;
f1.open(“Alfa.dat”,ios::binary);
f1.write(reinterpret_cast <char *>&c, sizeof(char));
}

ING. FELIX HUARI 8


ARCHIVOS ACCESO DIRECTO
A los registros individuales se acceden directamente
Los registros de un archivo deben ser de longitud fija
El uso de registros de longitud fija facilita calcular la
localización exacta de cualquier registro
Para proporcionar acceso directo al archivo, cada objeto
ifstream establece un marcador de posición de archivo
Este marcador es un numero entero largo
Para el desplazamiento del puntero de registro se usa
las funciones seekg() o seekp()
Otras funciones a utilizar son tellg() y tellp()

ING. FELIX HUARI 9


ARCHIVOS ACCESO DIRECTO
Resumiendo las funciones de posición en un archivo
para acceso directo

Función Descripción
seekg(desplazamiento, modo) Mueve el puntero de registro según el modo
indicado en una operación de lectura

seekp(desplazamiento, modo) Mueve el puntero de registro según el modo


indicado en una operación de salida

tellg() Devuelve la cantidad de bytes en una operación


de lectura

tellp() Devuelve la cantidad de bytes en una operación


de salida

ING. FELIX HUARI 10


ARCHIVOS ACCESO DIRECTO
El modo puede ser lo siguiente:

✓ ios::beg, búsqueda desde el principio


✓ ios::cur, búsqueda desde la posición actual
✓ ios::end, búsqueda desde el final

ING. FELIX HUARI 11


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

ING. FELIX HUARI 12


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

ING. FELIX HUARI 13


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

ING. FELIX HUARI 14


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

ING. FELIX HUARI 15


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

ING. FELIX HUARI 16


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

Se tiene que procesar los datos de n productos


Los datos son número de parte, nombre del producto,
cantidad en existencias y precio unitario
Esta información debe gestionar mediante una estructura
Luego debe escribir los datos en un archivo binario
Finalmente recuperar los datos desde el archivo para
mostrar por pantalla

ING. FELIX HUARI 17


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

Una empresa tiene n vendedores


Cada mes, hacen viajes al interior del país por carretera
para vender los productos de la empresa
Al final de cada mes, se registra las ventas totales de
cada vendedor junto con su respectivo DNI
Estos datos se guardan en un archivo
Asumir que se tiene datos de los 6 primeros meses
El gerente de la empresa quiere ver este informe con las
ventas totales por cada vendedor

ING. FELIX HUARI 18


ARCHIVOS BINARIOS
❑ EJEMPLO DE APLICACION

Crear un archivo “Puntos2D.txt” con bloc de notas


Almacenar las coordenadas de 10 puntos
Crear un archivo binario “Puntos2D.dat” tomando como
datos del primer archivo
El archivo binario debe contener las coordenadas de
cada punto y además la distancia del origen de
coordenadas al punto
Buscar un punto cualquiera, luego mostrar sus datos
Si no existe escribir un mensaje adecuado

ING. FELIX HUARI 19

You might also like