2

文件工作,我要存储一个JSON文件系统。我应该在哪里存储文件,以便用户无法看到/删除它们,并且在电话重启/重启后文件不会被删除?与Xamarin PCL项目

ApplicationData执行程序的用户特有的应用程序数据的目录。在非Windows操作系统,这 路径是环境变量XDG_CONFIG_HOME的值,如果它是 集,在当前用户的主目录 否则“的.config”目录。

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

LocalApplicationData计算机用户共享的应用程序数据目录。在非Windows操作系统上,这个路径是 环境变量XDG_DATA_HOME,如果它被设置的值, 否则“本地/共享”目录中的当前用户的主目录 。

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

来源:System.Environment.SpecialFolder

我不明白什么是个人整整,但在网络上的大多数网站,我发现人们使用它。我应该使用其中之一还是我看错了东西?

而对于目前存储(2017年五月)我只有两个选择是SQLite的PCLStorage

回答

2

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

  • Environment.SpecialFolder.ApplicationData$HOME/.config,它映射到/data/data/@[email protected]/files/.config

  • Environment.SpecialFolder.LocalApplicationData$HOME/.local/share,其映射到/data/data/@[email protected]/files/.local/share

  • Environment.SpecialFolder.Personal$HOME,它映射到/data/data/@[email protected]/files

纵观描述和映射到文件系统,用于保存JSON文件我可能会挑Environment.SpecialFolder.ApplicationData,但似乎没有什么错根据他们在文件系统中的映射方式挑选三者之一。

请注意,所有这些路径都在您的应用程序包的特定目录内,因此没有其他应用程序将能够访问这些文件。你也不能从任何文件系统访问它们(除非电话是根植的)。

如果你想要的任何文件路径的更多信息,你可以遍历它们,就像这样:

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

+0

是否有这3个目录之间的任何权限的差异?还有什么区别吗? – JedatKinports

+0

它们没有任何权限差异,因为它们都属于同一个应用程序包目录。只是他们的位置是不同的。这些实现细节上的文档确实缺失。用于处理文件的示例使用'Personal'来保存文件:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/#iOS_and_Android – degant

+0

我看到了这个链接,但正如您已经说过的那样,文档非常差,这就是为什么我提出这个问题,我忘了提及我需要在我的PCL项目中这样做。谢谢,这就是我想知道的。 :) – JedatKinports

相关问题