文件与文件系统操作全解析
1. 文件读写指针操作
在进行文件操作时,若使用同一句柄进行追加和读取操作,需格外小心。因为追加操作可能会使存储当前读取位置的内部指针发生偏移。若要先读取、再追加、最后继续读取,应在写入前保存当前位置,写入后再恢复。
可通过调用 seek 函数获取文件当前位置:
seek(SeekFrom::Current(0))
seek 函数会将指针移动指定字节数,并返回新位置。 SeekFrom::Current(0) 表示移动距离为零,即不移动指针,因此会返回当前位置。
接着,使用 flush 函数追加数据:
// 示例代码
flush();
调用此方法是因为 BufWriter 通常会在自身被丢弃(即超出作用域)时才进行实际写入操作。若想在这之前读取数据,就需使用 flush 强制写入。
最后,恢复之前保存的位置,准备再次读取:
buf_reader.seek(SeekFrom::Start(pos));
建议运行代码,查看结果,并将注释掉该行代码后的输出进行对比。
另外,为提高性能,可在程序开始时打开
文件与二进制操作全解
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



