如何高效iOS文件系统处理单个文件夹中的大量文件

时间:2012-01-09 14:52:26

标签: ios filesystems

如果我有大量文件(n x 100K个别文件),那么在iOS文件系统中存储它们的最有效方法是什么(从路径角度来看访问文件的速度)?我应该将它们全部转储到单个文件夹中,还是在多级文件夹层次结构中将它们分开。

基本上这有三个问题:

  1. 文件访问时间取决于“兄弟”文件的数量(我认为 答案是肯定的。如果我是正确的文件名被组织成b树 所以它应该是O(log n))?
  2. 沿着这个文件夹从一个文件夹到另一个文件夹的成本是多少 路径(它是m * O(log nm) - 其中m是数字 路径和nm中的分量是每条路径上“兄弟姐妹”的数量 组件)?
  3. 在文件系统级别缓存什么以使上述假设不正确?
  4. 如果有人直接遇到这类问题并且可以分享一些真实的生活结果,那将会很棒。

    您的评论将受到高度赞赏

3 个答案:

答案 0 :(得分:3)

这似乎可能会提供相关的硬数据:

文件系统与核心数据:图像缓存测试

http://biasedbit.com/blog/filesystem-vs-coredata-image-cache

结论:

  

正如预期的那样,文件系统缓存更快。存储时(稍微慢一些)核心数据很快落后,但执行单个随机访问时加载时间会更高。

     

对于这样一个简单的案例,核心数据功能确实没有支付,所以坚持使用文件系统版本。

答案 1 :(得分:0)

我认为你应该存储一切都是一个文件夹并创建一个哈希表,其中包括密钥(文件名)和值(源路径)pare。通过创建哈希表复杂度为常量log(1),这将加快你的过程也是如此。

答案 2 :(得分:0)

文件系统不是最佳数据库。有了这么多的文件,您应该考虑使用Core Data或其他数据库来存储每个文件的名称和内容。