D Программирование - Файловый ввод / вывод

Файлы представлены в файловой структуре в std.stdio модуля. Файл представляет собой последовательность байтов, независимо от того, является ли он текстовым файлом или двоичным файлом.

Язык программирования D обеспечивает доступ к функциям высокого уровня, а также к вызовам низкого уровня (уровень ОС) для обработки файлов на ваших устройствах хранения.

Открытие файлов в D

Стандартные потоки ввода и вывода stdin и stdout уже открыты при запуске программы. Они готовы к использованию. С другой стороны, файлы необходимо сначала открыть, указав имя файла и необходимые права доступа.

File file = File(filepath, "mode");

Вот, filename это строковый литерал, который вы используете для имени файла и доступа mode может иметь одно из следующих значений -

Sr.No. Режим и описание
1

r

Открывает существующий текстовый файл для чтения.

2

w

Открывает текстовый файл для записи, если он не существует, создается новый файл. Здесь ваша программа начнет писать контент с начала файла.

3

a

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

4

r+

Открывает текстовый файл для чтения и записи.

5

w+

Открывает текстовый файл для чтения и записи. Сначала он обрезает файл до нулевой длины, если он существует, в противном случае создает файл, если он не существует.

6

a+

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

Закрытие файла в D

Чтобы закрыть файл, используйте функцию file.close (), где file содержит ссылку на файл. Прототип этой функции -

file.close();

Любой файл, который был открыт программой, должен быть закрыт, когда программа закончит использовать этот файл. В большинстве случаев файлы не нужно закрывать явно; они закрываются автоматически, когда завершаются объекты File.

Запись файла в D

file.writeln используется для записи в открытый файл.

file.writeln("hello");

import std.stdio; 
import std.file;
  
void main() { 
   File file = File("test.txt", "w"); 
   file.writeln("hello");
   file.close(); 
}

Когда приведенный выше код компилируется и выполняется, он создает новый файл test.txt в каталоге, из которого он был запущен (в рабочем каталоге программы).

Чтение файла в D

Следующий метод считывает одну строку из файла -

string s = file.readln();

Полный пример чтения и записи показан ниже.

import std.stdio; 
import std.file; 
 
void main() { 
   File file = File("test.txt", "w");
   file.writeln("hello");  
   file.close(); 
   file = File("test.txt", "r"); 
   
   string s = file.readln(); 
   writeln(s);
   
   file.close(); 
}

Когда приведенный выше код компилируется и выполняется, он считывает файл, созданный в предыдущем разделе, и дает следующий результат:

hello

Вот еще один пример чтения файла до конца.

import std.stdio;
import std.string;

void main() { 
   File file = File("test.txt", "w");  
   file.writeln("hello"); 
   file.writeln("world");  
   file.close();  
   file = File("test.txt", "r"); 
    
   while (!file.eof()) { 
      string line = chomp(file.readln()); 
      writeln("line -", line); 
   }
}

Когда приведенный выше код компилируется и выполняется, он считывает файл, созданный в предыдущем разделе, и дает следующий результат:

line -hello 
line -world 
line -

В приведенном выше примере вы можете увидеть пустую третью строку, поскольку после выполнения Writeln переводит ее на следующую строку.