在 Xamarin PCL 项目中处理文件

Working with files in Xamarin PCL project

我想将 JSON 存储到文件系统。我应该将文件存储在哪里,以便用户无法 see/delete 它们并且文件不会在 phone reboot/restart?

之后被删除

ApplicationData The directory for application data specific to the user executing the program. On non-Windows operating systems, this path is the value of the environment variable XDG_CONFIG_HOME if it is set, otherwise the ".config" directory in the current user's home directory.

CommonApplicationData The directory for data shared by applications. On non-Windows operating systems, the "/usr/share" directory.

LocalApplicationData The directory for application data shared by users of the computer. On non-Windows operating systems, this path is the value of the environment variable XDG_DATA_HOME if it is set, otherwise the ".local/share" directory in the current user's home directory.

Personal The personal or home directory for the current user. On non-Windows operating systems, this is the user's home directory.

来源:System.Environment.SpecialFolder

我不明白 Personal 的确切用途,但在网络上的大多数网站上我发现有人在使用它。我应该使用其中之一还是我看错了东西?

目前(2017 年 5 月)存储,我仅有的两个选择是 SQLitePCLStorage.

您可以根据需要使用以下任何文件夹。如果我正确理解了你的问题,你只希望应用程序能够访问 (create/updated/delete) 某些文件,这些文件应该在 phone 重新启动或重新启动时保留,并且用户不应该能够访问这些文件.您可以使用以下特殊文件夹中的任何

  • Environment.SpecialFolder.ApplicationData$HOME/.config,映射到 /data/data/@PACKAGE_NAME@/files/.config

  • Environment.SpecialFolder.LocalApplicationData$HOME/.local/share,映射到 /data/data/@PACKAGE_NAME@/files/.local/share

  • Environment.SpecialFolder.Personal$HOME,映射到 /data/data/@PACKAGE_NAME@/files

查看文件系统的描述和映射,为了保存 JSON 文件,我可能会选择 Environment.SpecialFolder.ApplicationData,但根据以下情况选择这三个中的任何一个似乎都没有错它们如何映射到文件系统中。

请注意,所有这些路径都在您的应用程序包的特定目录中,因此其他应用程序将无法访问这些文件。而且您也无法从任何文件系统访问它们(除非 phone 已植根)。

如果您想了解有关任何文件路径的更多信息,可以遍历它们,如下所示:

static void PrintFolderPath(System.Environment.SpecialFolder folder)
{
    Console.WriteLine ("{0}={1}", folder, System.Environment.GetFolderPath(folder));
}

更多阅读:https://forums.xamarin.com/discussion/3773/system-environment-specialfolder