我正在尝试执行以下操作:
- 读取文件的属性
- 如果属性匹配某个条件,则删除文件
现在我NSFileManager
用来执行 aattributesOfItemAtPath:error:
后跟removeItemAtPath:error:
. 我担心这两个操作之间会发生一些使初始检查无效的事情。
使这两个操作原子化的最佳方法是什么?
编辑
到目前为止的答案建议文件锁定,我已经尝试过调查。我能找到的最接近的事情是设置NSFileImmutable
标志。但似乎任何其他程序都可以出现,取消设置并修改文件。有没有更好的方法来锁定文件?
编辑 2
有人要求一个用例。假设我正在尝试使两个文件夹保持同步。对一个文件夹中的文件所做的任何更改都会镜像到另一个文件夹中,反之亦然。如果我从文件夹 A 中删除文件 1,我也会从文件夹 B 中删除文件 1。但是如果文件夹 B 中的文件 1 在我删除之前发生更改;然后我不想删除它,而是想将它同步回文件夹 A