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` 執行後會將其移到下一行。

廣告