Operaciones de E / S de archivos

Necesitamos archivos para almacenar la salida de un programa cuando el programa termina. Usando archivos, podemos acceder a información relacionada usando varios comandos en diferentes idiomas.

Aquí hay una lista de algunas operaciones que se pueden realizar en un archivo:

  • Creando un nuevo archivo
  • Abrir un archivo existente
  • Leer el contenido del archivo
  • Buscando datos en un archivo
  • Escribir en un archivo nuevo
  • Actualizar contenido a un archivo existente
  • Eliminar un archivo
  • Cerrar un archivo

Escribir en un archivo

Para escribir contenido en un archivo, primero necesitaremos abrir el archivo requerido. Si el archivo especificado no existe, se creará un nuevo archivo.

Veamos cómo escribir contenido en un archivo usando C ++.

Ejemplo

#include <iostream> 
#include <fstream> 
using namespace std;  

int main () {   
   ofstream myfile; 
   myfile.open ("Tempfile.txt", ios::out); 
   myfile << "Writing Contents to file.\n"; 
   cout << "Data inserted into file"; 
   myfile.close(); 
   return 0; 
}

Note -

  • fstream es la clase de flujo utilizada para controlar las operaciones de lectura / escritura de archivos.

  • ofstream es la clase de flujo utilizada para escribir contenido en un archivo.

Veamos cómo escribir contenidos en un archivo usando Erlang, que es un lenguaje de programación funcional.

-module(helloworld).  
-export([start/0]).   

start() ->
   {ok, File1} = file:open("Tempfile.txt", [write]),  
   file:write(File1,"Writting contents to file"), 
   io:fwrite("Data inserted into file\n").

Note -

  • Para abrir un archivo tenemos que usar, open(filename,mode).

  • Sintaxis para escribir contenidos en un archivo: write(filemode,file_content).

Output - Cuando ejecutamos este código, se escribirá "Escribir contenido en un archivo" en el archivo. Tempfile.txt. Si el archivo tiene algún contenido existente, se sobrescribirá.

Leer de un archivo

Para leer de un archivo, primero tenemos que abrir el archivo especificado en reading mode. Si el archivo no existe, su método respectivo devuelve NULL.

El siguiente programa muestra cómo leer el contenido de un archivo en C++ -

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std;  

int main () {
   string readfile; 
   ifstream myfile ("Tempfile.txt",ios::in); 
   
   if (myfile.is_open()) {     
      while ( getline (myfile,readfile) ) {       
         cout << readfile << '\n'; 
      } 
      myfile.close(); 
   } else  
      cout << "file doesn't exist";  
   return 0; 
}

Producirá la siguiente salida:

Writing contents to file

Note- En este programa, abrimos un archivo de texto en modo lectura usando “ios :: in” y luego imprimimos su contenido en la pantalla. Hemos usadowhile bucle para leer el contenido del archivo línea por línea utilizando el método "getline".

El siguiente programa muestra cómo realizar la misma operación usando Erlang. Aquí usaremos elread_file(filename) método para leer todo el contenido del archivo especificado.

-module(helloworld).  
-export([start/0]).   

start() ->  
   rdfile = file:read_file("Tempfile.txt"),  
   io:fwrite("~p~n",[rdfile]).

Producirá la siguiente salida:

ok, Writing contents to file

Eliminar un archivo existente

Podemos eliminar un archivo existente usando operaciones de archivo. El siguiente programa muestra cómo eliminar un archivo existenteusing C++ -

#include <stdio.h> 

int main () {   
   if(remove( "Tempfile.txt" ) != 0 ) 
      perror( "File doesn’t exist, can’t delete" ); 
   else 
      puts( "file deleted successfully " ); 
   return 0; 
}

Producirá la siguiente salida:

file deleted successfully

El siguiente programa muestra cómo puede realizar la misma operación en Erlang. Aquí usaremos el métododelete(filename) para eliminar un archivo existente.

-module(helloworld).  
-export([start/0]).   

start() ->  
   file:delete("Tempfile.txt").

Output - Si existe el archivo “Tempfile.txt”, se eliminará.

Determinación del tamaño de un archivo

El siguiente programa muestra cómo puede determinar el tamaño de un archivo usando C ++. Aquí, la funciónfseek establece el indicador de posición asociado con la transmisión en una nueva posición, mientras que ftell devuelve la posición actual en la secuencia.

#include <stdio.h> 

int main () {  
   FILE * checkfile; 
   long size; 
   checkfile = fopen ("Tempfile.txt","rb"); 
   
   if (checkfile == NULL)  
      perror ("file can’t open"); 
   else {   
      fseek (checkfile, 0, SEEK_END);    // non-portable 
      size = ftell (checkfile); 
      fclose (checkfile); 
      printf ("Size of Tempfile.txt: %ld bytes.\n",size); 
   } 
   return 0; 
}

Output - Si existe el archivo “Tempfile.txt”, mostrará su tamaño en bytes.

El siguiente programa muestra cómo puede realizar la misma operación en Erlang. Aquí usaremos el métodofile_size(filename) para determinar el tamaño del archivo.

-module(helloworld).  
-export([start/0]).   

start() ->  
   io:fwrite("~w~n",[filelib:file_size("Tempfile.txt")]).

Output- Si existe el archivo “Tempfile.txt”, mostrará su tamaño en bytes. De lo contrario, mostrará "0".