Obj-C(iPhone)中的读写文件锁定
Posted
技术标签:
【中文标题】Obj-C(iPhone)中的读写文件锁定【英文标题】:Read-write file locking in Obj-C (iPhone) 【发布时间】:2011-08-20 14:26:45 【问题描述】:我正在寻找使用锁定读/写文件的方法。 ios sdk 支持这个功能吗?
我看到有两种方法可以读写文件。
第一个是NSFileManager
,另一个是NSInputStream
/NSOutputStream
,但是我还没有看到处理文件并发的方法,例如用写锁打开文件。
或者我必须自己实现那些锁定?
【问题讨论】:
【参考方案1】:一般来说,iOS 应用程序不会打扰锁定文件,因为这些文档是与其他应用程序分开的沙盒。 flock() 在 iOS 中实现,但我没有亲自使用过。如果您有多个线程或类共享相同的文件,这可能会很有用。
【讨论】:
我会尝试flock(),甚至只是一个包含锁定文件列表的内部线程安全数据结构。例如,您可以使用 NSMutableSet 来包含所有已锁定文件的完整路径名列表。您必须确保在访问集合时使用@synchronized,但这应该不会太难。公平访问会有点难以实现——等待时间最长的线程才能访问文件。【参考方案2】:NSOutputStream outputStreamToFileAtPath:append:
保持对文件的写锁定。
您仍然可以使用 fopen
和 fstream
(在 objc++ 中),它们将像在常规 linux 中一样工作。
【讨论】:
以上是关于Obj-C(iPhone)中的读写文件锁定的主要内容,如果未能解决你的问题,请参考以下文章