
- D 程式設計基礎
- D 程式設計 - 首頁
- D 程式設計 - 概述
- D 程式設計 - 環境
- D 程式設計 - 基本語法
- D 程式設計 - 變數
- D 程式設計 - 資料型別
- D 程式設計 - 列舉
- D 程式設計 - 字面量
- D 程式設計 - 運算子
- D 程式設計 - 迴圈
- D 程式設計 - 條件語句
- D 程式設計 - 函式
- D 程式設計 - 字元
- D 程式設計 - 字串
- D 程式設計 - 陣列
- D 程式設計 - 關聯陣列
- D 程式設計 - 指標
- D 程式設計 - 元組
- D 程式設計 - 結構體
- D 程式設計 - 聯合體
- D 程式設計 - 範圍
- D 程式設計 - 別名
- D 程式設計 - Mixin
- D 程式設計 - 模組
- D 程式設計 - 模板
- D 程式設計 - 不可變性
- D 程式設計 - 檔案 I/O
- D 程式設計 - 併發
- D 程式設計 - 異常處理
- D 程式設計 - 合約
- D - 條件編譯
- D 程式設計 - 面向物件
- D 程式設計 - 類與物件
- D 程式設計 - 繼承
- D 程式設計 - 過載
- D 程式設計 - 封裝
- D 程式設計 - 介面
- D 程式設計 - 抽象類
- D 程式設計 - 有用資源
- D 程式設計 - 快速指南
- D 程式設計 - 有用資源
- D 程式設計 - 討論
D 程式設計 - 檔案 I/O
檔案由 `std.stdio` 模組的 `File` 結構體表示。檔案表示位元組序列,無論是文字檔案還是二進位制檔案。
D 程式語言提供對高階函式以及低階(作業系統級)呼叫的訪問,以處理儲存裝置上的檔案。
在 D 語言中開啟檔案
程式執行時,標準輸入和輸出流 `stdin` 和 `stdout` 已經開啟並可供使用。另一方面,必須首先透過指定檔名和所需的訪問許可權來開啟檔案。
File file = File(filepath, "mode");
這裡,`filename` 是字串字面量,用於命名檔案,`access mode` 可以具有以下值之一:
序號 | 模式及描述 |
---|---|
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` 執行後會將其移到下一行。