D 编程 - 文件 I/O


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

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

打开D中的文件

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

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

这里,文件名是字符串文字,用于命名文件,访问模式可以具有以下值之一 -

先生。 模式及说明
1

r

打开现有文本文件以供阅读。

2

w

打开一个文本文件进行写入,如果不存在则创建一个新文件。在这里,您的程序将从文件的开头开始写入内容。

3

A

打开一个文本文件以追加模式写入,如果不存在则创建一个新文件。在这里,您的程序将开始在现有文件内容中附加内容。

4

r+

打开一个文本文件以进行读写。

5

瓦+

打开一个文本文件以进行读写。如果文件存在,它首先将文件截断为零长度,否则创建文件(如果不存在)。

6

一个+

打开一个文本文件以进行读写。如果文件不存在,它将创建该文件。阅读会从头开始,但写作只能追加。

关闭 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 一旦执行就会将其带到下一行。