Operazioni di I / O su file

Abbiamo bisogno di file per memorizzare l'output di un programma quando il programma termina. Utilizzando i file, possiamo accedere alle informazioni correlate utilizzando vari comandi in diverse lingue.

Ecco un elenco di alcune operazioni che possono essere eseguite su un file:

  • Creazione di un nuovo file
  • Apertura di un file esistente
  • Lettura del contenuto del file
  • Ricerca di dati su un file
  • Scrittura in un nuovo file
  • Aggiornamento dei contenuti a un file esistente
  • Eliminazione di un file
  • Chiusura di un file

Scrittura in un file

Per scrivere i contenuti in un file, dobbiamo prima aprire il file richiesto. Se il file specificato non esiste, verrà creato un nuovo file.

Vediamo come scrivere contenuti in un file utilizzando C ++.

Esempio

#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 è la classe di flusso utilizzata per controllare le operazioni di lettura / scrittura dei file.

  • ofstream è la classe di flusso utilizzata per scrivere i contenuti nel file.

Vediamo come scrivere contenuti in un file usando Erlang, che è un linguaggio di programmazione funzionale.

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

  • Per aprire un file dobbiamo usare, open(filename,mode).

  • Sintassi per scrivere contenuti su file: write(filemode,file_content).

Output - Quando eseguiamo questo codice, nel file verrà scritto "Scrittura del contenuto su file" Tempfile.txt. Se il file ha un contenuto esistente, verrà sovrascritto.

Leggere da un file

Per leggere da un file, prima dobbiamo aprire il file specificato in reading mode. Se il file non esiste, il rispettivo metodo restituisce NULL.

Il seguente programma mostra come leggere il contenuto di un file in formato 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; 
}

Produrrà il seguente output:

Writing contents to file

Note- In questo programma, abbiamo aperto un file di testo in modalità di lettura usando "ios :: in" e poi abbiamo stampato il suo contenuto sullo schermo. Abbiamo usatowhile loop per leggere il contenuto del file riga per riga utilizzando il metodo "getline".

Il seguente programma mostra come eseguire la stessa operazione utilizzando Erlang. Qui useremo il fileread_file(filename) metodo per leggere tutti i contenuti dal file specificato.

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

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

Produrrà il seguente output:

ok, Writing contents to file

Elimina un file esistente

Possiamo eliminare un file esistente utilizzando le operazioni sui file. Il seguente programma mostra come eliminare un file esistenteusing 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; 
}

Produrrà il seguente output:

file deleted successfully

Il seguente programma mostra come eseguire la stessa operazione in Erlang. Qui useremo il metododelete(filename) per eliminare un file esistente.

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

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

Output - Se il file "Tempfile.txt" esiste, verrà eliminato.

Determinazione della dimensione di un file

Il seguente programma mostra come determinare la dimensione di un file utilizzando C ++. Qui, la funzionefseek imposta l'indicatore di posizione associato allo stream su una nuova posizione, mentre ftell restituisce la posizione corrente nel flusso.

#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 - Se il file "Tempfile.txt" esiste, mostrerà la sua dimensione in byte.

Il seguente programma mostra come eseguire la stessa operazione in Erlang. Qui useremo il metodofile_size(filename) per determinare la dimensione del file.

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

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

Output- Se il file "Tempfile.txt" esiste, mostrerà la sua dimensione in byte. Altrimenti, verrà visualizzato "0".