- D 编程基础
- D 编程 - 主页
- D 编程 - 概述
- D 编程 - 环境
- D 编程 - 基本语法
- D 编程 - 变量
- D 编程 - 数据类型
- D 编程 - 枚举
- D 编程 - 文字
- D 编程 - 运算符
- D 编程 - 循环
- D 编程 - 决策
- D 编程 - 函数
- D 编程 - 字符
- D 编程 - 字符串
- D 编程 - 数组
- D 编程 - 关联数组
- D 编程 - 指针
- D 编程 - 元组
- D 编程 - 结构
- D 编程 - 联合
- D 编程 - 范围
- D 编程 - 别名
- D 编程 - Mixins
- 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");
这里,文件名是字符串文字,用于命名文件,访问模式可以具有以下值之一 -
先生。 | 模式及说明 |
---|---|
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 一旦执行就会将其带到下一行。