【问题标题】:Working with files in Xamarin PCL project使用 Xamarin PCL 项目中的文件
【发布时间】:2017-05-12 07:47:50
【问题描述】:

我想将 JSON 存储到文件系统。我应该将文件存储在哪里,以便用户无法看到/删除它们,并且在手机重启/重启后文件不会被删除?

ApplicationData 特定于执行程序的用户的应用程序数据目录。在非 Windows 操作系统上,这 path 是环境变量 XDG_CONFIG_HOME 的值,如果它是 设置,否则为当前用户家中的“.config”目录 目录。

CommonApplicationData 应用程序共享数据的目录。在非 Windows 操作系统上,“/usr/share” 目录。

LocalApplicationData 计算机用户共享的应用程序数据目录。在非 Windows 操作系统上,此路径为 环境变量 XDG_DATA_HOME 的值(如果已设置), 否则是当前用户家中的“.local/share”目录 目录。

个人 当前用户的个人或主目录。在非 Windows 操作系统上,这是用户的主目录。

来源:System.Environment.SpecialFolder

我不明白 Personal 到底是做什么用的,但在网络上的大多数网站上,我发现有人在使用它。我应该使用其中之一还是我看错了?

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

【问题讨论】:

    标签: xamarin xamarin.ios xamarin.android xamarin.forms portable-class-library


    【解决方案1】:

    您可以使用以下任何文件夹来满足您的要求。如果我正确理解了您的问题,您只希望应用程序能够访问(创建/更新/删除)某些文件,这些文件应该在手机重启或重启时保留,并且用户不应该能够访问这些文件。您可以使用任何以下特殊文件夹:

    • 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,但是根据它们在文件系统中的映射方式选择这三个中的任何一个似乎都没有错。

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

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

    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

    【讨论】:

    • 这3个目录有权限区别吗?有什么区别吗?
    • 它们没有任何权限差异,因为它们都属于同一个应用程序包目录。只是他们的位置不同。这些实现细节上确实缺少文档。处理文件的示例使用Personal 保存文件:developer.xamarin.com/guides/xamarin-forms/…
    • 我看到了那个链接,但是就像你已经说过的那样,文档真的很差,这就是我提出这个问题的原因,我忘了提到我需要在我的 PCL 项目中这样做。谢谢,这就是我想知道的。 :)
    • 也看看这个 nuget:github.com/dsplaisted/PCLStorage
    • 我最终使用了 PCLStorage。谢谢。 :)
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多