Archivos Binarios c++

Descripción completa

Views 167 Downloads 7 File size 71KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ARCHIVOS BINARIOS en C++ Los archivos binarios almacenan la información “byte a byte” en lugar de carácter por carácter, esto es muy útil cuando se necesita almacenar o recuperar información que no es un texto, por ejemplo: una imagen, un archivo ejecutable, un objeto, o datos numéricos de punto flotante. Estos archivos no se pueden leer con cualquier editor de texto, como el block de notas, hará falta otro programa, que podría ser desarrollado por nosotros para poder leerlo. Como ejemplo, realizaremos una copia de un archivo que contiene una imagen a otro archivo. Note que en este caso el programa ejecuta operaciones en archivos utilizando el modo binario (ios::binary), además es necesario aclarar el modo de apertura o escritura (ios::in) o (ios::out)

Programa para copiar una foto a otro archivo #include #include using namespace std; int main() { ifstream origen("foto.jpg", ios::binary); ofstream destino("CopiaFoto.jpg", ios::binary); // QUITE ios::binary y vea el resultado

char byte; while( !origen.eof() && !origen.fail() ) { origen.read((char *) & byte, sizeof(char)); if(origen.good()) { destino.write((char *) & byte, sizeof(char)); } } destino.close(); origen.close(); return 0; }

Observará que se utiliza la función miembro origen.read ( ) para leer un byte del archivo especificado por el objeto origen. En forma similar, se utiliza la función miembro destino.write ( ) para escribir un byte en el archivo especificado por el objeto destino, que crea el archivo llamado CopiaFoto. Un byte no es más que 8 bits y se lo puede guardar en una variable de tipo char.

Leer y escribir en un archivo binario Para leer y escribir a partir de la posición actual del cursor en el archivo binario, se debe utilizar las funciones read () y write (). archivo.read ((char *) &c, num); archivo.write ((char *) &c, num); Donde c es una variable o un objeto de cualquier tipo por referencia (&), y num es un entero que indica un número de bytes que se leerán o que se escribirán en el archivo. Normalmente, para expresar el tamaño o número de bytes a leer o escribir se usa la función sizeof que nos retorna el número de bytes que ocupa una variable o tipo. Por ejemplo, para agregar en un archivo binario dos variables de punto flotante al final del archivo se tiene: int e=10; float f=12.5235; fstream archi("prueba.bin", ios::binary|ios::out|ios::app); archi.write((char *)&e, sizeof(int)); archi.write((char *)&f, sizeof(float)); archi.close(); Pero para poder leer los datos no basta con abrir el archivo, debe escribir un programa para poder leer los datos como se muestra a continuación: int x; float y; fstream archi2("prueba.bin", ios::binary|ios::in); archi2.read((char *)&x, sizeof(int)); archi2. read ((char *)&y, sizeof(float)); archi2.close(); cout