鍍金池/ 教程/ C++/ D語(yǔ)言文件I/O
類的訪問(wèn)修飾符
D語(yǔ)言運(yùn)算符
D語(yǔ)言邏輯運(yùn)算符
類指針
D語(yǔ)言元組
D語(yǔ)言指針
D語(yǔ)言模塊
D語(yǔ)言sizeof運(yùn)算符
D語(yǔ)言混合類型
D語(yǔ)言封裝
D語(yǔ)言條件編譯
類的靜態(tài)成員
D語(yǔ)言do...while循環(huán)
D語(yǔ)言結(jié)構(gòu)體
重載
D語(yǔ)言字符串-String
D語(yǔ)言決策語(yǔ)句
D語(yǔ)言接口
D語(yǔ)言for循環(huán)
D語(yǔ)言switch語(yǔ)句
D語(yǔ)言關(guān)聯(lián)數(shù)組
D語(yǔ)言范圍
D語(yǔ)言枚舉Enums
契約式編程
D語(yǔ)言并發(fā)
D語(yǔ)言開發(fā)環(huán)境設(shè)置
D語(yǔ)言別名
D語(yǔ)言常值
D語(yǔ)言常量
D語(yǔ)言函數(shù)
D語(yǔ)言if嵌套語(yǔ)句
D語(yǔ)言循環(huán)
D語(yǔ)言概述,D語(yǔ)言是什么?
D語(yǔ)言運(yùn)算符優(yōu)先級(jí)
D語(yǔ)言continue語(yǔ)句
D語(yǔ)言異常處理
D語(yǔ)言break語(yǔ)句
D語(yǔ)言if...else語(yǔ)句
D語(yǔ)言類和對(duì)象
類繼承
D語(yǔ)言字符
D語(yǔ)言教程
D語(yǔ)言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語(yǔ)言抽象類
D語(yǔ)言if語(yǔ)句
D語(yǔ)言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語(yǔ)言類成員函數(shù)
D語(yǔ)言位運(yùn)算符
D語(yǔ)言變量
D語(yǔ)言數(shù)據(jù)類型
D語(yǔ)言文件I/O
D語(yǔ)言數(shù)組
一元運(yùn)算符重載
D語(yǔ)言嵌套switch語(yǔ)句
D語(yǔ)言基本語(yǔ)法
二元運(yùn)算符重載
this指針
D語(yǔ)言聯(lián)合體
D語(yǔ)言模板
D語(yǔ)言嵌套循環(huán)
D語(yǔ)言while循環(huán)

D語(yǔ)言文件I/O

文件是由std.stdio模塊的文件結(jié)構(gòu)來(lái)表示。

一個(gè)文件代表一個(gè)字節(jié)序列,不要緊,如果它是一個(gè)文本文件或二進(jìn)制文件。 D編程語(yǔ)言提供了高級(jí)功能的訪問(wèn),以及較低的水平(操作系統(tǒng)級(jí)別)調(diào)用來(lái)處理存儲(chǔ)設(shè)備的文件。

打開文件

標(biāo)準(zhǔn)輸入和輸出流stdin和stdout已經(jīng)打開,當(dāng)程序開始運(yùn)行。他們已經(jīng)準(zhǔn)備好可以使用。另一方面,文件必須首先通過(guò)指定該文件的名稱以及所需的訪問(wèn)權(quán)限打開。

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

在這里,文件名是字符串文字,用它來(lái)命名文件和訪問(wèn)模式可以有下列值之一:

Mode 描述
r 打開讀取目的,現(xiàn)有的文本文件。
w 打開寫,如果它不存在,則創(chuàng)建一個(gè)新的文件的文本文件。在這里,程序?qū)㈤_始從文件的開頭寫的內(nèi)容。
a 打開寫在追加模式,如果它不存在,則創(chuàng)建一個(gè)新的文件的文本文件。在這里,程序?qū)?dòng)附加在現(xiàn)有文件內(nèi)容的內(nèi)容。
r+ 打開用于讀取和寫入文本文件。
w+ 打開用于讀取和寫入兩個(gè)文本文件。它首先截?cái)嘣撐募L(zhǎng)度為零(如果存在),否則創(chuàng)建的文件,如果它不存在。
a+ 打開用于讀取和寫入兩個(gè)文本文件。如果它不存在,創(chuàng)建該文件。該讀數(shù)將從頭開始寫,但只能??追加。

關(guān)閉一個(gè)文件

要關(guān)閉一個(gè)文件,請(qǐng)使用file.close()函數(shù)所在文件存放文件的參考。這個(gè)函數(shù)的原型為:

file.close();

當(dāng)程序使用完該文件已經(jīng)打開一個(gè)程序的任何文件都必須關(guān)閉。在大多數(shù)情況下,文件不需要被明確地關(guān)閉;它們會(huì)自動(dòng)關(guān)閉,當(dāng)文件對(duì)象會(huì)自動(dòng)終止。

寫入文件

file.writeln是用來(lái)寫一個(gè)打開的文件。

file.writeln("hello");
import std.stdio;
import std.file;

void main()
{
   File file = File("test.txt", "w");

   file.writeln("hello");

   file.close();
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會(huì)在它已開始下(在程序的工作目錄)目錄中的新文件test.txt。

讀取文件

下面是一個(gè)簡(jiǎn)單的方法來(lái)從文件中讀取一行:

string s = file.readln();

讀取和寫入一個(gè)完整的示例如下所示。

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();
}

當(dāng)上面的代碼被編譯并執(zhí)行,它在讀取上一節(jié)中創(chuàng)建的文件,并產(chǎn)生以下結(jié)果:

hello

這里是另一個(gè)例子,用于讀取文件,直到文件結(jié)束。


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);
   }

}

當(dāng)上面的代碼被編譯并執(zhí)行,它在讀取上一節(jié)中創(chuàng)建的文件,并產(chǎn)生以下結(jié)果:

line -hello
line -world
line -

可以在上面的例子中看到一個(gè)空的第三行,因?yàn)橐坏┧粓?zhí)行writeln需要到下一行。