我有一些非常大的文件需要处理,我使用多种不同的I/O函数来访问它们。其中最常用的是
在写入文件时,我已经吃过亏了,必须刷新输出缓冲区,否则数据是否保存就很难确定。然而,这可能会导致等待时间非常长,因为
有没有办法在R中确定是否已经刷新了I/O缓冲区,特别是对于
如果可以将答案推广到除
如果没有好的解决方案来检查缓冲区是否已经被清空,是否存在可以假定缓冲区已经被清空的情况?即是否除了使用
更新:我应该澄清一下,这些都是二进制连接。@RichieCotton指出
bigmemory
包。在写入文件时,我已经吃过亏了,必须刷新输出缓冲区,否则数据是否保存就很难确定。然而,这可能会导致等待时间非常长,因为
bigmemory
需要做很多事情(数分钟)。我不知道为什么会发生这种情况-它并不总是发生,也不容易重现。有没有办法在R中确定是否已经刷新了I/O缓冲区,特别是对于
bigmemory
?如果操作系统很重要,那么可以限制回答的范围。如果可以将答案推广到除
bigmemory
之外的其他内存映射函数或I/O流,则更好,因为我有时会依赖其他函数。如果没有好的解决方案来检查缓冲区是否已经被清空,是否存在可以假定缓冲区已经被清空的情况?即是否除了使用
flush()
外还有其他方法?更新:我应该澄清一下,这些都是二进制连接。@RichieCotton指出
isIncomplete()
,尽管帮助文档只提到了文本连接。不清楚它是否可用于二进制连接。
bigmemory
中是否可用,但isIncomplete
对于常规连接是有效的。 - Richie Cotton