File I/O
文件由std.stdio模块的File结构表示。 文件表示一个字节序列,如果它是文本文件或二进制文件则无关紧要。
D编程语言提供对高级功能的访问以及低级(OS级)调用,以处理存储设备上的文件。
在D中打开文件
当程序开始运行时,标准输入和输出流stdin和stdout已经打开。 它们已准备好使用。 另一方面,必须首先通过指定文件名和所需的访问权来打开文件。
File file = File(filepath, "mode");
这里, filename是字符串文字,用于命名文件,访问mode可以具有以下值之一 -
Sr.No. | 模式和说明 |
---|---|
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就把它带到下一行。