Xamarin.iOS沙盒存储

本文主要讲解在实际开发中使用沙盒进行存储的原理和简单实现


首先我们需要了解在iOS中沙盒究竟是个什么东西?沙盒类似就是手机的总的文件管理中心,iOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。也就是在平常没有越狱的手机,我们是无法找到每个应用的文件夹目录,从而将手机里面的内容文件进行导出的。

接着 我们看看沙盒这个目录机构究竟是什么样子的:

Xamarin.iOS沙盒存储_第1张图片

从上边我们可以看到,沙盒分为主要的4个文件夹:Documents、Library/Caches、Library/Preference、Tmp;

Documents: 苹果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
Library/Caches: 保存应用运行时生成的需要持久化的数据,一般存储体积大,不需要备份的非重要数据,缓存等;
Library/Preference: 保存应用的所有偏好设置;
Tmp: 保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。

下面就是获取文件路径的代码:

//Documents
var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
//Library
var library = Path.Combine (documents, "..", "Library");
//Caches或者Preference
var cache = Path.Combine (documents, "..", "Library", "Caches");
//Tmp
var tmp = Path.Combine (documents, "..", "tmp");

读写操作:

//write获取文件路径然后写
var documents =
 Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); 
var filename = Path.Combine (documents, "Write.txt");
File.WriteAllText(filename, "Write this text into a file");
//read
var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "Write.txt");
var text = File.ReadAllText(filename);

偏好设置:

// 获取单例对象
var plist = NSUserDefaults.StandardUserDefaults;
// 获取值
var useHeader = plist.BoolForKey("UseHeader");
// 保存值
plist.SetBool(useHeader, "UseHeader");

到这里Xamarin.iOS沙盒的介绍和简单数据存储就完成了,希望能对您有所帮助。

——End 有问题可以加我微信,大家一起讨论

你可能感兴趣的:(Xamarin.iOS沙盒存储)