12
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 (no es necesario la conversión). 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 1

Archivos Binarios

Embed Size (px)

DESCRIPTION

algoritmos

Citation preview

Page 1: Archivos Binarios

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 (no es necesario la conversión).

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. A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 1

Page 2: Archivos Binarios

ARCHIVOS BINARIOS

Para abrir un archivo binario es usa el

manipulador binary en la función 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

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 2

Page 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 *>

La misma es utilizada con las instrucciones read y

write.

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 3

Page 4: Archivos Binarios

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));

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 4

Page 5: Archivos Binarios

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));

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 5

Page 6: Archivos Binarios

EJEMPLOS DE APLICACIÓN //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);

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 6

Page 7: Archivos Binarios

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();

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 7

Page 8: Archivos Binarios

APLICACIÓN 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

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 8

Page 9: Archivos Binarios

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;

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 9

Page 10: Archivos Binarios

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);

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 10

Page 11: Archivos Binarios

CONTINUACION... //Cerrando el archivo

F1.close();

F2.open(mFile,ios::in|ios::binary);

cout<<"Codigo\tApellidos y 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));

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 11

Page 12: Archivos Binarios

CONTINUACION...

cout<<cod<<"\t"<<ApePat<<"\t"<<ApeMat<<"\t"<<Nom<<"\t"<<n1<<"\t"

<<n2<<"\t"<<n3<<"\t"<<prom<<"\t"<<obs<<endl;

F2.read(T(&cod),sizeof(cod));

}

//Cerrando el archivo

F2.close();

}

A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 12