You are on page 1of 12

ARCHIVOS BINARIOS

La informacin contenida en el archivo no es


legible para el usuario.
El proceso de lectura y escritura es mas rpido,
ya que la grabacin en el archivo es
directamente
a partir del contenido de la
memoria (no es necesario la conversin).
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
es valido en un archivo binario.
ALGORITMOS Y ESTRUCTURA DE DATOS

ARCHIVOS BINARIOS
Para abrir un archivo binario es usa el
manipulador binary en la funcin open.
Ejemplos:
ofstream file;
fstream arch;
file.open(costos.dat,ios:binary);
//Abre el archivo para salida en modo binario
arch.open(leyes.dat,ios::out | ios::in | ios::binary);
//Abre el archivo para entrada o salida en modo binario
ALGORITMOS Y ESTRUCTURA DE DATOS

OPERADOR REINTERPRET_CAST
C++ proporciona este operador para realizar
conversiones mediante cast no standard o
conversin cast standard.
La sintaxis es la siguiente:
reinterpret_cast <char *>
La misma es utilizada con las instrucciones read y
write.

ALGORITMOS Y ESTRUCTURA DE DATOS

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

Donde: num, es la cantidad de bytes que lee del archivo y lo


almacena en la variable.
#include <fstream.h>
int main()
{ ifstream f1; char c;
f1.open(Alfa.dat,ios::in | ios::binary);
f1.read(&c,sizeof(char));
}
ALGORITMOS Y ESTRUCTURA DE DATOS

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

Donde: num, es la cantidad de bytes que escribe en el


archivo el valor que se encuentra en la direccion de
memoria de la variable.
#include <fstream.h>
int main()
{ ifstream f1; char c;
f1.open(Alfa.dat,ios::out | ios::binary);
f1.write(&c,sizeof(char));
}
ALGORITMOS Y ESTRUCTURA DE DATOS

EJEMPLOS DE APLICACIN
//Programa para manejo de archivos Binarios
#include <fstream.h>
#include <iostream>
#define T reinterpret_cast <char *>
using namespace std;
const int Max=15;
int main()
{ int i,k; char mFile[Max]="Prueba.dat";

char c; ofstream F1; // Crea el objeto Archi para escritura


F1.open(mFile,ios::binary); // Abre un archivo con un nombre externo
ifstream F2;
if(F1.fail())

{ cout<<"No dispone de suficiente espacio en Disco\n";


exit(1);
}
ALGORITMOS Y ESTRUCTURA DE DATOS

CONTINUACION...
else
{ cout<<"El archivo se abrio con exito para escritura\n";
for(i=1;i<=17;i++)
F1.write(T(&i),sizeof(int));
F1.close();
}
F2.open("Prueba.dat",ios::binary); F2.read(T(&k),sizeof(int));
while(!F2.eof())
{ cout<<k<<" ";
F2.read(T(&k),sizeof(int));
}
cout<<endl;
F2.close();
}
ALGORITMOS Y ESTRUCTURA DE DATOS

APLICACIN DE NOTAS
//Programa que almacena los datos de N alumnos y luego lo muestra
#include <fstream.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#define T reinterpret_cast <char *>
using namespace std;
const int M=15,N=25;
int main()
{ char mFile[M]="NotaBina.dat"; float n1,n2,n3,prom;
char cod[8],ApePat[N],ApeMat[N],Nom[N],obs[11];
ifstream F2; // Crea el objeto Archi para Lectura
ofstream F1; // Crea el objeto Archi para Escritura
F1.open(mFile,ios::binary); // Abre un archivo

ALGORITMOS Y ESTRUCTURA DE DATOS

CONTINUACION
if(F1.fail())
{ cout<<"El Archivo no se puede abrir con exito\n"
<<"Verifique si el archivo existe"<<endl;
exit(1);
}
cout<<"El archivo se abrio con exito para Escritura\n";
cout<<"Codigo o Enter para finalizar..... ";gets(cod);
for(;strlen(cod)!=0;)
{ cout<<"Apellido Paterno:";gets(ApePat);
cout<<"Apellido Materno:";gets(ApeMat);
cout<<"Nombres
:";gets(Nom);
cout<<"Nota 1
:";cin>>n1;
cout<<"Nota 2
:";cin>>n2;
cout<<"Nota 3
:";cin>>n3;
ALGORITMOS Y ESTRUCTURA DE DATOS

CONTINUACION...
prom=(n1+n2+n3)/3;
if(prom>10.5)
strcpy(obs,"Aprobado");
else
strcpy(obs,"Desaprobado");
F1.write(T(&cod),sizeof(cod));
F1.write(T(&ApePat),sizeof(ApePat));
F1.write(T(&ApeMat),sizeof(ApeMat));
F1.write(T(&Nom),sizeof(Nom));F1.write(T(&n1),sizeof(n1));
F1.write(T(&n2),sizeof(n2));F1.write(T(&n3),sizeof(n3));
F1.write(T(&prom),sizeof(prom));F1.write(T(&obs),sizeof(obs));
cout<<"Codigo o Enter para finalizar..... ";gets(cod);
}

ALGORITMOS Y ESTRUCTURA DE DATOS

10

CONTINUACION...
//Cerrando el archivo
F1.close();
F2.open(mFile,ios::in|ios::binary);
cout<<"Codigo\tApellidos
Nombres\tEvaluaciones\tPromedio\tObserv.\n";
F2.read(T(&cod),sizeof(cod));
while(!F2.eof())
{ F2.read(T(&ApePat),sizeof(ApePat));
F2.read(T(&ApeMat),sizeof(ApeMat));
F2.read(T(&Nom),sizeof(Nom));F2.read(T(&n1),sizeof(n1));
F2.read(T(&n2),sizeof(n2));F2.read(T(&n3),sizeof(n3));
F2.read(T(&prom),sizeof(prom));F2.read(T(&obs),sizeof(obs));

ALGORITMOS Y ESTRUCTURA DE DATOS

11

CONTINUACION...
cout<<cod<<"\t"<<ApePat<<"\t"<<ApeMat<<"\t"<<Nom<<"\t"<<n
1<<"\t"
<<n2<<"\t"<<n3<<"\t"<<prom<<"\t"<<obs<<endl;
F2.read(T(&cod),sizeof(cod));
}
//Cerrando el archivo
F2.close();
}

ALGORITMOS Y ESTRUCTURA DE DATOS

12

You might also like