Operações de I / O de arquivo

Precisamos de arquivos para armazenar a saída de um programa quando o programa termina. Usando arquivos, podemos acessar informações relacionadas usando vários comandos em diferentes idiomas.

Aqui está uma lista de algumas operações que podem ser realizadas em um arquivo -

  • Criação de um novo arquivo
  • Abrindo um arquivo existente
  • Lendo o conteúdo do arquivo
  • Pesquisando dados em um arquivo
  • Escrevendo em um novo arquivo
  • Atualizar o conteúdo para um arquivo existente
  • Excluindo um arquivo
  • Fechando um arquivo

Escrevendo em um arquivo

Para gravar o conteúdo em um arquivo, primeiro precisamos abrir o arquivo necessário. Se o arquivo especificado não existir, um novo arquivo será criado.

Vamos ver como escrever conteúdo em um arquivo usando C ++.

Exemplo

#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 é a classe de fluxo usada para controlar as operações de leitura / gravação de arquivos.

  • ofstream é a classe de fluxo usada para escrever o conteúdo no arquivo.

Vamos ver como escrever conteúdo em um arquivo usando Erlang, que é uma linguagem de programação 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 um arquivo, temos que usar, open(filename,mode).

  • Sintaxe para gravar conteúdo no arquivo: write(filemode,file_content).

Output - Quando executamos este código, “Gravando o conteúdo no arquivo” será gravado no arquivo Tempfile.txt. Se o arquivo tiver algum conteúdo existente, ele será sobrescrito.

Lendo de um arquivo

Para ler um arquivo, primeiro temos que abrir o arquivo especificado em reading mode. Se o arquivo não existir, seu respectivo método retornará NULL.

O programa a seguir mostra como ler o conteúdo de um arquivo em 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; 
}

Ele produzirá a seguinte saída -

Writing contents to file

Note- Neste programa, abrimos um arquivo texto em modo de leitura usando “ios :: in” e depois imprimimos seu conteúdo na tela. Nós usamoswhile loop para ler o conteúdo do arquivo linha por linha usando o método “getline”.

O programa a seguir mostra como realizar a mesma operação usando Erlang. Aqui, vamos usar oread_file(filename) método para ler todo o conteúdo do arquivo especificado.

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

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

Ele produzirá a seguinte saída -

ok, Writing contents to file

Excluir um arquivo existente

Podemos excluir um arquivo existente usando operações de arquivo. O programa a seguir mostra como excluir um arquivo 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; 
}

Ele produzirá a seguinte saída -

file deleted successfully

O programa a seguir mostra como você pode realizar a mesma operação em Erlang. Aqui, vamos usar o métododelete(filename) para excluir um arquivo existente.

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

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

Output - Se o arquivo “Tempfile.txt” existir, ele será excluído.

Determinando o tamanho de um arquivo

O programa a seguir mostra como você pode determinar o tamanho de um arquivo usando C ++. Aqui, a funçãofseek define o indicador de posição associado ao fluxo para uma nova posição, enquanto ftell retorna a posição atual no fluxo.

#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 o arquivo “Tempfile.txt” existe, então mostrará seu tamanho em bytes.

O programa a seguir mostra como você pode realizar a mesma operação em Erlang. Aqui, vamos usar o métodofile_size(filename) para determinar o tamanho do arquivo.

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

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

Output- Se o arquivo “Tempfile.txt” existe, então mostrará seu tamanho em bytes. Caso contrário, exibirá “0”.