D语言文件I/O - D语言教程

文件是由std.stdio模块的文件结构来表示。

一个文件代表一个字节序列,不要紧,如果它是一个文本文件或二进制文件。 D编程语言提供了高级功能的访问,以及较低的水平(操作系统级别)调用来处理存储设备的文件。

打开文件

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

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

在这里,文件名是字符串文字,用它来命名文件和访问模式可以有下列值之一:

Mode 描述
r 打开读取目的,现有的文本文件。
w 打开写,如果它不存在,则创建一个新的文件的文本文件。在这里,程序将开始从文件的开头写的内容。
a 打开写在追加模式,如果它不存在,则创建一个新的文件的文本文件。在这里,程序将启动附加在现有文件内容的内容。
r+ 打开用于读取和写入文本文件。
w+ 打开用于读取和写入两个文本文件。它首先截断该文件长度为零(如果存在),否则创建的文件,如果它不存在。
a+ 打开用于读取和写入两个文本文件。如果它不存在,创建该文件。该读数将从头开始写,但只能​​追加。

关闭一个文件

要关闭一个文件,请使用file.close()函数所在文件存放文件的参考。这个函数的原型为:

file.close();

当程序使用完该文件已经打开一个程序的任何文件都必须关闭。在大多数情况下,文件不需要被明确地关闭;它们会自动关闭,当文件对象会自动终止。

写入文件

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。

读取文件

下面是一个简单的方法来从文件中读取一行:

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需要到下一行。