首页 > 解决方案 > Xamarin.Essentials 如何处理 iOS“文档”文件夹?

问题描述

我按照“<a href="https://docs.microsoft.com/en-us/learn/paths/build-mobile-apps-with-xamarin-forms/" rel="nofollow noreferrer">构建移动应用Xamarin.Forms”课程。在“<a href="https://docs.microsoft.com/en-us/learn/modules/store-local-data-with-sqlite/" rel="nofollow noreferrer">使用 SQLite 存储本地数据一个 Xamarin.Forms 应用程序”部分,他们说 iOS 提供了两个文件夹来处理保存在设备上的文件:

然后,介绍本小节:

在此处输入图像描述

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

标签: xamarinxamarin.formsxamarin.iosfilesystemsxamarin.essentials

解决方案


在本文档中有关于 iOS 中文件夹的不同用途的详细信息:

文件:/

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

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

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

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

此目录的内容由 iTunes 备份。

图书馆/:

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

您可以在库中创建自己的子目录;但是,这里已经有一些您应该注意的系统创建的目录,包括 Preferences 和 Caches。

此目录的内容(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);

推荐阅读