D 语言 - I/O 文件输入/输出

文件由 std.stdio 模块的 File 结构表示。 一个文件代表一个字节序列,无论是文本文件还是二进制文件。

D 编程语言提供对高级函数的访问以及低级(操作系统级)调用来处理存储设备上的文件。

打开 D 中的文件

当程序开始运行时,标准输入和输出流 stdin 和 stdout 已经打开。 它们已准备好可供使用。 另一方面,必须首先通过指定文件名和所需的访问权限来打开文件。

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

此处,filename 是字符串文字,用于命名文件和访问 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 在执行后会将其带到下一行。