【问题标题】:How does Xamarin.Essentials deal with the iOS “Documents” folder?Xamarin.Essentials 如何处理 iOS“文档”文件夹?
【发布时间】:2021-01-03 16:17:56
【问题描述】:

我遵循“build mobile apps with Xamarin.Forms”课程。在“store local data with SQLite in a Xamarin.Forms app”部分,他们说 iOS 提供了两个文件夹来处理保存在设备上的文件:

  • Documents 文件夹,仅用于用户生成的数据。
  • Library 文件夹,用于存放应用生成的数据。

然后,呈现这个小节:

我不明白的是:这是处理iOS Documents文件夹的正确方法吗?我问这个是因为他们明确说 libFolder 包含适当的 Library 位置。 Apple 指南要求的 Documents 文件夹呢?

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.ios filesystems xamarin.essentials


    【解决方案1】:

    this document中有关于iOS中文件夹不同用途的详细信息:

    文件:/

    使用此目录来存储用户文档和应用程序数据文件。

    这个目录的内容可以提供给用户 通过 iTunes 文件共享(尽管默认情况下禁用)。 将 UIFileSharingEnabled 布尔键添加到 Info.plist 文件以允许 用户访问这些文件。

    即使应用程序没有立即启用文件共享,您 应该避免将应该对用户隐藏的文件放置在 此目录(例如数据库文件,除非您打算共享 他们)。只要敏感文件保持隐藏状态,这些文件就不会 被暴露(并可能被 iTunes 移动、修改或删除),如果 将来的版本中会启用文件共享。

    您可以使用 Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments) 方法获取路径 应用程序的文档目录。

    此目录的内容由 iTunes 备份。

    图书馆/:

    Library 目录是存储非 由用户直接创建,例如数据库或其他 应用程序生成的文件。这个目录的内容永远不会 通过 iTunes 向用户展示。

    您可以在库中创建自己的子目录;然而,有 您应该知道这里已经有一些系统创建的目录 的,包括首选项和缓存。

    该目录的内容(Caches 子目录除外) 由 iTunes 备份。您在库中创建的自定义目录 将被备份。

    请阅读文档,如果您还有其他问题,请随时询问。

    更新

    访问更新答案:

    iOS:

    string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
    string libFolder = System.IO.Path.Combine(docFolder, "..", "Library");
    

    安卓:

    string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
    

    【讨论】:

    • 感谢您的回复,但我仍然没有找到我的问题的答案。在我阅读时,Documents 文件夹是我放置用户生成文件的位置,但我仍然无法弄清楚 Xamarin.Essentials 是如何处理它的。
    • 您阅读的部分是关于 Sqlite 的,Xamarin 建议您将 Sqlite 存储在库文件夹中。 Xamarin.Essentials 为您提供访问库文件夹的快速方法。 Xamarin.Essentials 没有为您提供访问文档文件夹的快速方法。如果您想访问文档文件夹,请参阅我的更新答案。
    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多