Файловые операции ввода-вывода

Нам нужны файлы для хранения вывода программы, когда программа завершается. Используя файлы, мы можем получить доступ к связанной информации с помощью различных команд на разных языках.

Вот список некоторых операций, которые можно выполнять с файлом -

  • Создание нового файла
  • Открытие существующего файла
  • Чтение содержимого файла
  • Поиск данных в файле
  • Запись в новый файл
  • Обновление содержимого существующего файла
  • Удаление файла
  • Закрытие файла

Запись в файл

Чтобы записать содержимое в файл, нам сначала нужно открыть требуемый файл. Если указанный файл не существует, будет создан новый файл.

Давайте посмотрим, как записать содержимое в файл с помощью C ++.

пример

#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 - это класс потока, используемый для управления операциями чтения / записи файлов.

  • ofstream класс потока, используемый для записи содержимого в файл.

Давайте посмотрим, как записать содержимое в файл с помощью Erlang, который является функциональным языком программирования.

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

  • Чтобы открыть файл, мы должны использовать, open(filename,mode).

  • Синтаксис для записи содержимого в файл: write(filemode,file_content).

Output - Когда мы запустим этот код, в файл будет записано «Запись содержимого в файл». Tempfile.txt. Если в файле есть какое-либо содержимое, оно будет перезаписано.

Чтение из файла

Чтобы читать из файла, сначала мы должны открыть указанный файл в reading mode. Если файл не существует, соответствующий метод возвращает NULL.

Следующая программа показывает, как читать содержимое файла в 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; 
}

Он выдаст следующий результат -

Writing contents to file

Note- В этой программе мы открыли текстовый файл в режиме чтения с помощью «ios :: in», а затем распечатали его содержимое на экране. Мы использовалиwhile цикл для чтения содержимого файла построчно, используя метод «getline».

Следующая программа показывает, как выполнить ту же операцию, используя Erlang. Здесь мы будем использоватьread_file(filename) для чтения всего содержимого из указанного файла.

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

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

Он выдаст следующий результат -

ok, Writing contents to file

Удалить существующий файл

Мы можем удалить существующий файл, используя файловые операции. Следующая программа показывает, как удалить существующий файл.using 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; 
}

Он выдаст следующий результат -

file deleted successfully

Следующая программа показывает, как вы можете выполнить ту же операцию в Erlang. Здесь мы воспользуемся методомdelete(filename) для удаления существующего файла.

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

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

Output - Если файл «Tempfile.txt» существует, он будет удален.

Определение размера файла

Следующая программа показывает, как можно определить размер файла с помощью C ++. Здесь функцияfseek устанавливает индикатор положения, связанный с потоком, на новую позицию, тогда как ftell возвращает текущую позицию в потоке.

#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 - Если файл «Tempfile.txt» существует, то он покажет его размер в байтах.

Следующая программа показывает, как вы можете выполнить ту же операцию в Erlang. Здесь мы воспользуемся методомfile_size(filename) чтобы определить размер файла.

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

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

Output- Если файл «Tempfile.txt» существует, то он покажет его размер в байтах. В противном случае будет отображаться «0».