D語言文件I/O

文件是由std.stdio模塊的文件結構來表示。

一個文件代表一個字節序列,不要緊,如果它是一個文本文件或二進制文件。 D編程語言提供了高級功能的訪問,以及較低的水平(操作系統級別)調用來處理存儲設備的文件。

打開文件

標準輸入和輸出流stdin和stdout已經打開,當程序開始運行。他們已經準備好可以使用。另一方面,文件必須首先通過指定該文件的名稱以及所需的訪問權限打開。

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

在這裏,文件名是字符串文字,用它來命名文件和訪問模式可以有下列值之一:

Mode

描述

r

打開讀取目的,現有的文本文件。

w

打開寫,如果它不存在,則創建一個新的文件的文本文件。在這裏,程序將開始從文件的開頭寫的內容。

a

打開寫在追加模式,如果它不存在,則創建一個新的文件的文本文件。在這裏,程序將啓動附加在現有文件內容的內容。

r+

打開用於讀取和寫入文本文件。

w+

打開用於讀取和寫入兩個文本文件。它首先截斷該文件長度爲零(如果存在),否則創建的文件,如果它不存在。

a+

打開用於讀取和寫入兩個文本文件。如果它不存在,創建該文件。該讀數將從頭開始寫,但只能​​追加。

關閉一個文件

要關閉一個文件,請使用file.close()函數所在文件存放文件的參考。這個函數的原型爲:

file.close();

當程序使用完該文件已經打開一個程序的任何文件都必須關閉。在大多數情況下,文件不需要被明確地關閉;它們會自動關閉,當文件對象會自動終止。

寫入文件

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。

讀取文件

下面是一個簡單的方法來從文件中讀取一行:

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需要到下一行。