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