> Erlang中文手册 > datasync/1 同步数据到磁盘

file:datasync/1

同步数据到磁盘

用法:

datasync(IoDevice) -> ok | {error, Reason}

确保操作系统(不是 Erlang 的运行系统)缓冲区里的数据全部写入磁盘。在很多方面,这个函数的用法类似与 file:sync/1,当时它不需要更新文件的一些元数据(例如文件的访问时间)。在一些平台,这个函数可能没有效。

访问数据库的应用,或一些日志文件经常写入一些细小的数据碎片(例如:一个日志文件一行),然后立即调用 file:sync/1 来确保要写入的数据保存到硬盘上。不幸的是,file:sync/1 函数总是发起两个写入操作:一个是写入新数据,另外一个是更新保存在索引节点里的修改时间。如果修改时间不是事务概念的一部分,那么 file:datasync/1 可以用来避免一些不必要的索引节点磁盘的写入操作。

这个函数只在一些 POSIX 系统有效。如果系统不执行 file:datasync/1 调用,那么会尝试调用 file:sync/1,或者不做任何操作。

{ok, IoDevice} = file:open("./rebar.config", read),
file:datasync(IoDevice).