什么是适合在Xamarin.Forms中存储应用程序数据的最佳Environment.SpecialFolder?

27

我是Xamarin.Forms和移动开发的新手。我想将我的应用程序用户的用户名和加密密码存储在移动设备上的文件中。我正在使用Xamarin Forms技术。我知道有许多不同的文件夹。例如:

System.Environment.SpecialFolder.Personal
System.Environment.SpecialFolder.LocalApplicationData
System.Environment.SpecialFolder.MyDocuments

完整列表可以在这里找到:https://msdn.microsoft.com/zh-cn/en-enl/library/system.environment.specialfolder(v=vs.110).aspx

哪个文件夹 / 目录最适合存储:

  • 用户和密码数据
  • 其他应用程序特定数据

??

编辑:我发现“个人”对我很好,但如果您有其他答案,请也发布出来。SpecialFolder.Personal location

1个回答

44

存储小的键值对:

Xamarin.Forms 实现了 Application.Current.Properties,将键值数据存储在应用的本地存储中,并且只有存储这些键值对的应用程序可以安全地访问它们。

存储文档/数据库 (Sqlite):

每个平台都有自己的文件夹结构来存储应用程序特定的数据/文件。

Android:

Environment.SpecialFolder.Personal & MyDocuments 都映射到: /data/data/@PACKAGE_NAME@/files

Environment.SpecialFolder.LocalApplicationData 映射到: /data/data/@PACKAGE_NAME@/files/.local/share

我们可以根据文件系统中的映射方式将文件存储在上述任何一个目录中。除非手机已经被 root,否则其他应用程序无法访问以上任何一个目录,用户也无法在世界范围内访问它们。

iOS:

Environment.SpecialFolder.Personal, LocalApplicationData & MyDocuments 都映射到: /Documents

iOS 具有以下目录结构:

/Documents
/Library
/Library/Application Support
/Library/Caches
/tmp

/Documents: 如果在应用的info.plist中开启了iTunes共享,则可以在中看到。内容可以通过进行备份。

/Library: 在中不可见。可以通过进行备份,但是Caches目录除外。

不需要向用户公开的文件/数据应存储在Library目录中。例如,数据库文件。如果需要,我会选择使用Library目录进行额外的安全性保护,同时加密文件(如果需要)。

要进入Library路径:

Path.Combine(Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments), "..", "Library");

要了解每个枚举与目录的映射,请点击此处

了解关于iOS 文件系统基础知识


6
使用 Environment.SpecialFolder.Resources 可以把文件保存到 /Library。 - matt.writes.code

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接