【发布时间】:2014-11-17 09:44:04
【问题描述】:
我有多个进程写入同一个 XML 文件。我正在使用 NativeXML 库。
我想在任何进程写入文件时锁定我的文件,以免文件中的数据被覆盖。
【问题讨论】:
我有多个进程写入同一个 XML 文件。我正在使用 NativeXML 库。
我想在任何进程写入文件时锁定我的文件,以免文件中的数据被覆盖。
【问题讨论】:
当您创建一个文件时,使用独占权限创建它,或者至少禁用写访问共享,然后根据需要对其进行写入。除非您先将其关闭,否则其他人将无法打开该文件进行写入。
事实上,NativeXML 在通过 SaveToFile() 方法将 XML 保存到文件时已经做到了这一点。它使用TFileStream,这是TFileSteam 创建新文件时的默认行为。
但是,如果您需要更多地控制访问权限,那么您可以创建自己的TFileStream 对象,以便您可以根据需要填写其构造函数参数。或者创建一个THandleStream 对象,该对象引用您直接使用Window 的CreateFile() API 创建的文件句柄。然后,您可以通过其SaveToStream() 方法让 NativeXml 写入该流。
【讨论】: