我有一些大的大文件可以使用,我使用几种不同的I/O函数来访问它们。最常见的是bigmemory
包。测试缓冲区是否已经刷新R
写入文件时,我已经学会了刷新输出缓冲区的难题,否则所有的注单都会关闭,无论数据是否已保存。然而,这可能会导致一些很长的等待时间,而bigmemory
会做它的事情(很多分钟)。我不知道为什么会发生这种情况 - 它并不总是会发生,也不容易复制。
是否有某种方法可以确定I/O缓冲区是否已在R中刷新,特别是对于bigmemory
?如果操作系统很重要,那么请随意以这种方式限制答案。
如果一个答案可以推广到bigmemory
以外,那就太好了,因为我有时会依赖其他存储器映射函数或I/O流。
如果没有好的方法来检查缓冲区是否被刷新,是否存在可以假设缓冲区已被刷新的情况?即除了使用flush()
。
更新:我应该说明这些都是二进制连接。 @RichieCotton指出isIncomplete()
,尽管帮助文档只提到文本连接。目前还不清楚这是否可用于二进制连接。
不确定使用'bigmemory',但'isIncomplete'适用于常规连接。 –
谢谢!关于连接的非常有限的帮助信息只提到isIncomplete适用于输出文本连接。你有幸用二进制连接? – Iterator