8、文件与文件系统操作全解析

文件与二进制操作全解

文件与文件系统操作全解析

1. 文件读写指针操作

在进行文件操作时,若使用同一句柄进行追加和读取操作,需格外小心。因为追加操作可能会使存储当前读取位置的内部指针发生偏移。若要先读取、再追加、最后继续读取,应在写入前保存当前位置,写入后再恢复。

可通过调用 seek 函数获取文件当前位置:

seek(SeekFrom::Current(0))

seek 函数会将指针移动指定字节数,并返回新位置。 SeekFrom::Current(0) 表示移动距离为零,即不移动指针,因此会返回当前位置。

接着,使用 flush 函数追加数据:

// 示例代码
flush();

调用此方法是因为 BufWriter 通常会在自身被丢弃(即超出作用域)时才进行实际写入操作。若想在这之前读取数据,就需使用 flush 强制写入。

最后,恢复之前保存的位置,准备再次读取:

buf_reader.seek(SeekFrom::Start(pos));

建议运行代码,查看结果,并将注释掉该行代码后的输出进行对比。

另外,为提高性能,可在程序开始时打开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值