Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Xamarin PCL项目中使用文件_Xamarin_Xamarin.ios_Xamarin.android_Xamarin.forms_Portable Class Library - Fatal编程技术网

在Xamarin PCL项目中使用文件

在Xamarin PCL项目中使用文件,xamarin,xamarin.ios,xamarin.android,xamarin.forms,portable-class-library,Xamarin,Xamarin.ios,Xamarin.android,Xamarin.forms,Portable Class Library,我想将JSON存储到文件系统中。我应该将文件存储在哪里,以便用户无法查看/删除它们,并且在手机重新启动/重新启动后不会删除这些文件 ApplicationData特定于执行程序的用户的应用程序数据目录。在非Windows操作系统上,此 path是环境变量XDG_CONFIG_HOME的值(如果是) 设置,否则设置当前用户主页中的“.config”目录 目录 CommonApplicationData应用程序共享的数据目录。在非Windows操作系统上,“/usr/share” 目录 LocalA

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

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

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

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

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

资料来源:

我不知道个人到底是干什么用的,但在网上的大多数网站上,我发现人们都在使用它。我应该使用其中一个,还是看错了东西


对于目前(2017年5月)的存储,我唯一的两个选项是SQLitePCLStorage,您可以根据需要使用以下任何文件夹。如果我正确理解了您的问题,您只希望应用程序能够访问(创建/更新/删除)某些文件,这些文件应该在手机重新启动或重新启动时保留,而用户不应该能够访问这些文件。您可以使用以下任何特殊文件夹:

  • Environment.SpecialFolder.ApplicationData
    $HOME/.config
    ,它映射到
    /data/data/@PACKAGE\u NAME@/files/.config

  • Environment.SpecialFolder.LocalApplicationData
    $HOME/.local/share
    ,它映射到
    /data/data/@PACKAGE\u NAME@/files/.local/share

  • Environment.SpecialFolder.Personal
    $HOME
    ,它映射到
    /data/data/@PACKAGE\u NAME@/files

查看描述和到文件系统的映射,为了保存JSON文件,我可能会选择
Environment.SpecialFolder.ApplicationData
,但是根据这三个文件在文件系统中的映射方式选择其中一个似乎没有什么错

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

如果您想了解有关任何文件路径的更多信息,可以对其进行迭代,如下所示:

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

更多阅读:

这3个目录之间的权限是否存在差异?有什么区别吗?它们没有任何权限差异,因为它们都属于同一个应用程序包目录。只是他们的位置不同。关于这些实现细节的文档确实缺失了。使用文件的示例使用
Personal
保存文件:我看到了该链接,但正如您所说,文档非常糟糕,这就是为什么我提出了这个问题,我忘了在我的PCL项目中提到我需要这样做。谢谢,我只想知道这些再看看这个nuget:我最终使用了PCLStorage。谢谢。:)