Dlang 文件读取与 EOF 指针位置关系详解
Dlang 文件读取与 EOF 指针位置关系详解
以下 Dlang 代码展示了文件读写操作与 EOF 状态之间的关系:
import std.stdio;
void main()
{
auto file1 = File('example.txt', 'w');
file1.writeln('Hello, world!');
auto file2 = File('example.txt', 'r');
writeln(file2.name()); // 输出 'example.txt'
file2.readln(); // 读取 'Hello, world!'
writeln(file2.eof()); // 输出 false
file2.detach();
//writeln(file1.eof()); // 输出 false
//file1.readln(); // 读取 'Hello, world!'
//writeln(file1.eof()); // 输出 true
//file1.close(); // 关闭文件
}
为什么去掉 auto file1 = File('example.txt', 'w'); file1.writeln('Hello, world!'); 这两行代码,读取 eof 为 false 保留却为 true 内容?
这是因为在执行完写入操作后,文件指针已经到达了文件末尾,而没有执行写入操作的时候,文件指针是在文件开头的位置。
当执行读取操作时,文件指针会向后移动,直到到达文件末尾,此时 eof 为 true。因此,保留写入操作的代码时,文件指针并没有到达文件末尾,执行读取操作时 eof 为 false。
总结:
- 写入操作会将文件指针移动到文件末尾,导致读取操作时 EOF 为 false。
- 没有执行写入操作时,文件指针位于文件开头,读取操作会使文件指针移动到文件末尾,最终导致 EOF 为 true。
原文地址: http://www.cveoy.top/t/topic/ox9x 著作权归作者所有。请勿转载和采集!