【问题标题】:How to query files using FileManager in iOS如何在 iOS 中使用 FileManager 查询文件
【发布时间】:2021-10-14 05:22:48
【问题描述】:

我刚开始使用FileManager,想知道是否有一种方法可以根据自定义属性查询文件,而无需检索文件的内容。

类似于creationDatemodificationDate,我想要一个名为topicsCovered 的属性,它是一个包含诸如“技术”、“政治”等内容的字符串数组(用于新闻文章)。由于新闻文章可能有很多图像,我不想不必要地检索所有新闻文章,将它们转换为具体类型,然后过滤掉我不想要的那些(特别是因为我最多会存储 500文章,这意味着从磁盘中检索大约 1gb 的文件)。

因此,如果有办法在使用FileManager 检索文件之前查询文件,请告诉我,因为我觉得从磁盘检索大约 1gb 的文件可能是一项非常昂贵/繁重的操作。

提前致谢!

【问题讨论】:

  • 只需创建一个自定义结构并使用您需要的任何内容存储您的文件 url。
  • @LeoDabus “用你需要的任何东西存储你的文件 url”是什么意思?抱歉,我刚开始使用文件管理器,所以我不太确定该怎么做或这意味着什么
  • 我的意思是 FileManager 没有特殊的权力。如果您已经知道文件包含的内容,只需将该信息与其 url 一起存储。否则,您将需要至少加载每个文件内容一次。
  • @LeoDabus 好的,我会调查一下。非常感谢!
  • 如果您想将其保留在内存中,您可能需要使用cache。否则,只需将结构化数据存储在应用程序目录中。从磁盘访问轻量级数据应该非常快。

标签: ios swift file nsfilemanager


【解决方案1】:

您的系统中有一堆文件。我建议您创建一个额外的文件“元数据”,其中包含有关所有其他文件的元数据(例如,涵盖的主题信息)以及文件本身的 URL/文件名。您还可以将此元数据存储在 CoreData 或某个数据库表中。

然后,例如,当您查找所有“政治”文章时,您打开元数据文件并找到所有涉及政治的条目,这些条目将为您提供要加载的文件的文件名。

【讨论】:

  • 我可以像 cmets 中建议的 @Leo 那样将这些信息存储在 url 中吗? “如果您已经知道文件包含的内容,只需将该信息连同其 url 一起存储。”
  • “将该信息与 URL 一起存储”正是我建议您执行的操作。不过,您必须将该信息存储在某个地方,因此它要么在不同的文件中,要么在数据库中。
  • 嘿丹尼尔,很抱歉这么晚才回来。我只是想澄清一些事情,因为我认为我误解了它。 “将该信息与 URL 一起存储”是指将所有 Articles 保存在名为“Articles Cache”的文件夹中,并且在该文件夹中有一个 .txt 文件,其中包含所有可能的主题和一组 UUID匹配那些主题?然后我可以在.txt 文件中查询一个主题并立即获得我需要的所有UUID。之后,我终于使用FileManager 来检索使用“.../Articles Cache/”的文件。还是您的意思完全不同?
  • 当然,这是一个解决方案。
猜你喜欢
  • 1970-01-01
  • 2017-05-30
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 2018-03-07
相关资源
最近更新 更多