objective-c – OSX中的事务性文件 *** 作

objective-c – OSX中的事务性文件 *** 作,第1张

概述我正在尝试执行以下 *** 作: >读取文件的属性 >如果属性符合某个条件, 删除文件 现在我正在使用NSFileManager来执行attributesOfItemAtPath:error:后跟removeItemAtPath:error:.我担心在初始检查无效的两个 *** 作之间会发生一些事情. 使这两个 *** 作成为原子的最佳方法是什么? 编辑 到目前为止的答案建议文件锁定,我试过调查.我能找到的最接近的是设置 我正在尝试执行以下 *** 作:

>读取文件的属性
>如果属性符合某个条件,
删除文件

现在我正在使用NSfileManager来执行attributesOfItemAtPath:error:后跟removeItemAtPath:error:.我担心在初始检查无效的两个 *** 作之间会发生一些事情.

使这两个 *** 作成为原子的最佳方法是什么?

编辑

到目前为止的答案建议文件锁定,我试过调查.我能找到的最接近的是设置NSFileImmutable标志.但似乎任何其他程序都可以出现,取消设置,并修改文件..是否有更好的方法来锁定文件?

编辑2

有人要求用例.假设我正在尝试保持两个文件夹同步.对一个文件夹中的文件所做的任何更改都会在另一个文件夹中进行镜像,反之亦然.如果我从文件夹A中删除文件1,我也会从文件夹B中删除文件1.但是如果文件夹B中的文件1在删除之前就改变了;然后我想将它同步回文件夹A而不是删除它

解决方法 您可以使用强制(内核强制)文件锁定来锁定有问题的文件,以防止在对文件进行 *** 作时对文件进行更改.我知道linux和Solaris支持强制文件锁定,但我不知道OS X / HFS是否有用,如果是,如何使用它.希望这可以帮助. 总结

以上是内存溢出为你收集整理的objective-c – OSX中的事务性文件 *** 作全部内容,希望文章能够帮你解决objective-c – OSX中的事务性文件 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1009158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存