Professional Documents
Culture Documents
Por definición, un archivo es una colección de datos almacenados en algún lugar. En C++, el programador
puede considerar que un archivo es un stream, de tal manera que los objetos vistos en la sección anterior ( cin,
cout, cerr y clog ) son una especie de archivo manipulados por streams. Este punto es de suma importancia, ya
que todo lo que se ha mencionado acerca de los atributos, banderas y manipuladores; que son miembros de los
objetos ( stream ) para entrada y salida estándar, son aplicables a los streams que usemos para trabajar con
archivos en disco y/o cualquier otro dispositivo de almacenamiento. Hasta este momento, solamente se ha
mencionado que los streams poseen banderas y que las mismas pueden alterarse a traves de los manipuladores,
sin embargo, hace falta hablar acerca de los métodos o funciones que son miembros de dichos streams. Así,
antes de ver un ejemplo para mostrar el uso de archivos en disco listaremos una tabla más, o sea, la de los
métodos aplicables a los streams.
Observe que la sintaxis para crear objetos de las tres clases mostradas arriba es la misma. Es decir,
1. El primer método constructor crea un objeto que no está (aún) asociado a un archivo en disco, en estos
casos, se tendrá que usar el método stream.open("nombre de archivo"); para establecer la conección
entre el stream y el archivo en disco.
2. El segundo método constructor crea un objeto asociado a un archivo en disco, en estos casos, el archivo
en el disco queda abierto y asociado al stream. En este, el parámetro char * apunta a una cadena de
caracteres con el nombre del archivo.
3. El tecer método crea un stream a raiz de un identificador de archivo.
4. El cuarto método crea un stream a raiz de un identificador de archivo, un buffer y tamaño de buffer
específicos.
Para nuestro primer ejemplo usaremos el segundo de los constructores mencionados. Así, el programa que se
muestra en seguida realiza las siguientes tareas:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
fichero.close();
cout << "archivo creado exitosamente" << endl;
return 0;
}
int main()
{
crearArchivo(filename);
leerArchivo(filename);
cout << endl << "Presione <Enter>...";
cin.get();
return 0;
}
No hay que olvidar que si un archivo es asociado a un stream las operaciones de entrada y/o salida para dicho
archivo se hacen a travez del stream y, por lo tanto, se puede usar, no solo los operadores de redirección, sino
tambien todos los metodos, manipuladores y atributos que se ha mencionado hasta este momento. Así, el
objetivo del siguiente programa es demostrar como hacer uso del operador << sobre un archivo asociado a un
stream de salida, y del operador >> sobre un archivo asociado a un stream de entrada. El ejemplo que se
mostrará no es realmente útil, sin embargo cumple con su cometido, es decir, el punto de interes del mismo está
en las líneas de código:
while ( ! fin.eof() ) {
fin >> temp;
fout << temp ;
}
Encargadas de leer datos del archivo de entrada y de escribir los mismos en el archivo de salida.
#include <iostream.h>
#include <fstream.h>
// abre y lee datos de un archivo en disco cuyo nombre es dado por filename
int leerArchivo(char *filename)
{
ifstream fichero(filename); // abrir archivo para lectura
// lectura de datos
while ( ! fichero.eof() ) cout << (char)fichero.get();
fichero.close();
cout << endl << "archivo leido exitosamente" << endl;
return 0;
}
char temp;
while ( ! fin.eof() ) {
fin >> temp;
fout << temp ;
}
fin.close();
fout.close();
return 0;
}
int main()
{
backup(filename);
leerArchivo("test.bak");
cout << endl << "Presione <Enter>...";
cin.get();
return 0;
}