C++ Manejo de archivos: cómo abrir, escribir, leer y cerrar archivos en C++
¿Qué es el manejo de archivos? C++?
Los archivos almacenan datos de forma permanente en un dispositivo de almacenamiento. Con el manejo de archivos, la salida de un programa se puede almacenar en un archivo. Se pueden realizar varias operaciones con los datos mientras están en el archivo.
Un flujo es una abstracción de un dispositivo donde se realizan operaciones de entrada/salida. Puedes representar un flujo como destino o como origen de caracteres de longitud indefinida. Esto estará determinado por su uso. C++ le proporciona una biblioteca que viene con métodos para el manejo de archivos. Discutámoslo.
La biblioteca fstream
La biblioteca fstream proporciona C++ programadores con tres clases para trabajar con archivos. Estas clases incluyen:
- fuera de corriente– Esta clase representa un flujo de salida. Se utiliza para crear archivos y escribir información en archivos.
- si corriente– Esta clase representa un flujo de entrada. Se utiliza para leer información de archivos de datos.
- corriente continua– Esta clase generalmente representa una secuencia de archivos. Viene con capacidades ofstream/ifstream. Esto significa que es capaz de crear archivos, escribir en archivos y leer archivos de datos.
La siguiente imagen lo hace fácil de entender:
Para utilizar las clases anteriores de la biblioteca fstream, debe incluirlas en su programa como un archivo de encabezado. Por supuesto, utilizará la directiva de preprocesador #include. También debe incluir el archivo de encabezado iostream.
Cómo abrir archivos
Antes de realizar cualquier operación en un archivo, primero debe abrirlo. Si necesita escribir en el archivo, ábralo usando objetos fstream u ofstream. Si solo necesita leer el archivo, ábralo usando el objeto ifstream.
Los tres objetos, es decir, fstream, ofstream e ifstream, tienen la función open() definida en ellos. La función toma esta sintaxis:
open (file_name, mode);
- El parámetro file_name indica el nombre del archivo que se va a abrir.
- El parámetro de modo es opcional. Puede tomar cualquiera de los siguientes valores:
Value alto | Descripción |
---|---|
ios:: aplicación | El modo Agregar. La salida enviada al archivo se le adjunta. |
ios::comió | Abre el archivo para la salida y luego mueve el control de lectura y escritura al final del archivo. |
ios::en | Abre el archivo para una lectura. |
ios :: fuera | Abre el archivo para escribirlo. |
ios::trunc | Si un archivo existe, los elementos del archivo deben truncarse antes de abrirlo. |
Es posible utilizar dos modos al mismo tiempo. Los combinas usando el | (O) operador.
Ejemplo 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en el programa para utilizar sus funciones.
- Incluya el archivo de encabezado fstream en el programa para usar sus clases.
- Incluya el espacio de nombres estándar en nuestro código para usar sus clases sin llamarlo.
- Llame a la función principal(). La lógica del programa debe ir dentro de su cuerpo.
- Crea un objeto de la clase fstream y asígnale el nombre my_file.
- Aplique la función open() en el objeto anterior para crear un nuevo archivo. El modo de salida nos permite escribir en el archivo.
- Utilice la declaración if para comprobar si falló la creación del archivo.
- Mensaje para imprimir en la consola si el archivo no fue creado.
- Fin del cuerpo de la declaración if.
- Utilice una declaración else para indicar qué hacer si se creó el archivo.
- Mensaje para imprimir en la consola si se creó el archivo.
- Aplique la función close() en el objeto para cerrar el archivo.
- Fin del cuerpo de la declaración else.
- El programa debe devolver valor si se completa exitosamente.
- Fin del cuerpo de la función main().
Cómo cerrar archivos
Una vez C++ programa termina, automáticamente
- limpia los arroyos
- libera la memoria asignada
- cierra los archivos abiertos.
Sin embargo, como programador, debes aprender a cerrar archivos abiertos antes de que finalice el programa.
Los objetos fstream, ofstream e ifstream tienen la función close() para cerrar archivos. La función toma esta sintaxis:
void close();
Cómo escribir en archivos
Puede escribir en el archivo directamente desde su C++ Programa. Para ello, utilice el operador de inserción de secuencia (<<). El texto que se va a escribir en el archivo debe estar entre comillas dobles.
Demostrémoslo.
Ejemplo 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Salida:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en el programa para utilizar sus funciones.
- Incluya el archivo de encabezado fstream en el programa para usar sus clases.
- Incluya el espacio de nombres estándar en el programa para usar sus clases sin llamarlo.
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una instancia de la clase fstream y asígnele el nombre my_file.
- Utilice la función open() para crear un nuevo archivo llamado my_file.txt. El archivo se abrirá en el modo de salida para escribir en él.
- Utilice una declaración if para comprobar si el archivo no se ha abierto.
- Texto para imprimir en la consola si el archivo no está abierto.
- Fin del cuerpo de la declaración if.
- Utilice una declaración else para indicar qué hacer si se creó el archivo.
- Texto para imprimir en la consola si se creó el archivo.
- Escriba algo de texto en el archivo creado.
- Utilice la función close() para cerrar el archivo.
- Fin del cuerpo de la declaración else.
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main().
Cómo leer archivos
Puede leer información de archivos en su C++ programa. Esto es posible utilizando el operador de extracción de flujo (>>). Se utiliza el operador de la misma forma que se utiliza para leer la entrada del usuario desde el teclado. Sin embargo, en lugar de utilizar el objeto cin, se utiliza el objeto ifstream/fstream.
Ejemplo 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Salida:
No existe el archivo
Aquí hay una captura de pantalla del código:
Explicación del código:
- Incluya el archivo de encabezado iostream en el programa para utilizar sus funciones.
- Incluya el archivo de encabezado fstream en el programa para usar sus clases.
- Incluya el espacio de nombres estándar en el programa para usar sus clases sin llamarlo.
- Llame a la función principal(). La lógica del programa debe agregarse dentro del cuerpo de esta función.
- Cree una instancia de la clase fstream y asígnele el nombre my_file.
- Utilice la función open() para crear un nuevo archivo llamado my_file.txt. El archivo se abrirá en el modo in para leerlo.
- Utilice una declaración if para comprobar si el archivo no existe.
- Texto para imprimir en la consola si no se encuentra el archivo.
- Fin del cuerpo de la declaración if.
- Utilice una declaración else para indicar qué hacer si se encuentra el archivo.
- Créar un variable de caracteres llamado cap.
- Créar un mientras bucle para iterar sobre el contenido del archivo.
- Escribe/almacena el contenido del archivo en la variable ch.
- Utilice una condición if y una función eof() es decir, el final del archivo, para garantizar que el compilador siga leyendo el archivo si no se llega al final.
- Utilice una declaración de interrupción para dejar de leer el archivo una vez que se llegue al final.
- Imprime el contenido de la variable ch en la consola.
- Fin del cuerpo while.
- Fin del cuerpo de la declaración else.
- Llame a la función close() para cerrar el archivo.
- El programa debe devolver valor una vez completado con éxito.
- Fin del cuerpo de la función main().
Resum
- Con el manejo de archivos, la salida de un programa se puede enviar y almacenar en un archivo.
- Luego se pueden aplicar varias operaciones a los datos mientras están en el archivo.
- Una secuencia es una abstracción que representa un dispositivo donde se realizan operaciones de entrada/salida.
- Una secuencia se puede representar como destino o fuente de caracteres de longitud indefinida.
- La biblioteca fstream proporciona C++ programadores con métodos para el manejo de archivos.
- Para usar la biblioteca, debe incluirla en su programa usando la directiva de preprocesador #include.