如何按扇区读取文件,而不是依赖Cocoa中的OS缓存

时间:2013-08-14 02:32:33

标签: objective-c cocoa

我有任何疑问:如果Mac缓存文件内容,如何按扇区读取任何文件,而不依赖于Cocoa中的OS缓存。我用initWithContentsOfURL:_fileURL options:NSUncachedRead error:NULL,是不是?谢谢你的回答。

1 个答案:

答案 0 :(得分:2)

标志NSDataReadingUncached(或其弃用的同义词,NSUncachedRead)是操作系统的提示,表示不应将文件添加到缓存中。它们可用于防止将大的,不重要的文件添加到缓存中,并从页面缓存中驱逐其他更重要的数据。并注意“提示”一词:操作系统可以自由地忽略提示。

你到底想要完成什么?

操作系统确保缓存包含与磁盘相同的数据,因此无论您是从缓存中读取还是从磁盘读取,都将始终获得相同的数据。唯一的区别在于性能。所以我最好的猜测是你必须尝试编写存储基准。

解决方案

您可以通过运行purge命令来刷新缓存(您可以使用NSTask)。这会刷新整个磁盘缓存,因此它会使您的计算机非常慢,直到缓存再次变暖。

这仅适用于OS X.我没有适用于iOS的解决方案。