2013-01-31 172 views
1

它是安全的打开输入流文件,同时输出流到同一个文件打开(但不写的话) (单线程)输入和输出流

+0

为什么要输出流如果您没有写入文件,可以打开一个文件? –

+0

我有一个类写入日志文件,我想保持流打开,所以我可以随时写入日志文件。我也想每隔一段时间打开一个输入流来检查日志文件的大小。 – marcwho

回答

3

部分取决于系统。系统可能不允许。除此之外,只要有一个数据流可以写入,同一个文件上有多个数据流打开(不管方向如何),就必须考虑缓冲。就你而言,如果你在打开阅读流之前进行刷新,并且在阅读时不要书写,那应该没问题。如果你正在尝试编写并阅读你写的最后一件事情,那就更困难了,因为没有什么可以使读缓冲区与文件重新同步。如果你试图通过两个不同的流写作,它会更成问题。 (虽然如果应该总是在最后添加写入操作,并且可以在刷新时进行排列,但使用std::ios_base::app打开文件应该有效,但这不会帮助读取。)

3

这也可能是“不安全”就像骑自行车没有头盔一样是不安全的。事情可能更容易出错,但如果你聪明并且小心谨慎,这应该不会有问题。但是,实际上并不需要这么做,您可以在想要阅读时关闭输出流,然后在完成阅读后重新打开它。