- D 编程基础
- D 编程 - 首页
- D 编程 - 概述
- D 编程 - 环境
- D 编程 - 基本语法
- D 编程 - 变量
- D 编程 - 数据类型
- D 编程 - 枚举
- D 编程 - 字面量
- D 编程 - 运算符
- D 编程 - 循环
- D 编程 - 条件语句
- D 编程 - 函数
- D 编程 - 字符
- D 编程 - 字符串
- D 编程 - 数组
- D 编程 - 关联数组
- D 编程 - 指针
- D 编程 - 元组
- D 编程 - 结构体
- D 编程 - 联合体
- D 编程 - 范围
- D 编程 - 别名
- D 编程 - Mixin
- D 编程 - 模块
- D 编程 - 模板
- D 编程 - 不可变性
- D 编程 - 文件 I/O
- D 编程 - 并发
- D 编程 - 异常处理
- D 编程 - 合约
- D - 条件编译
- D 编程 - 面向对象
- D 编程 - 类与对象
- D 编程 - 继承
- D 编程 - 重载
- D 编程 - 封装
- D 编程 - 接口
- D 编程 - 抽象类
- D 编程 - 有用资源
- D 编程 - 快速指南
- D 编程 - 有用资源
- D 编程 - 讨论
D 编程 - 文件 I/O
文件由 `std.stdio` 模块的 `File` 结构体表示。文件表示字节序列,无论是文本文件还是二进制文件。
D 编程语言提供对高级函数以及低级(操作系统级)调用的访问,以处理存储设备上的文件。
在 D 语言中打开文件
程序运行时,标准输入和输出流 `stdin` 和 `stdout` 已经打开并可供使用。另一方面,必须首先通过指定文件名和所需的访问权限来打开文件。
File file = File(filepath, "mode");
这里,`filename` 是字符串字面量,用于命名文件,`access 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` 执行后会将其移到下一行。