文件是由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需要到下一行。