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