Учебники

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

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

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

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

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

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

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

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

р

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

2

вес

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

3

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

4

г +

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

5

ш +

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

6

а +

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

р

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

вес

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

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

г +

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

ш +

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

а +

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

Закрытие файла в 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 переносит ее на следующую строку после ее выполнения.