1、要素:应用的/Documents文件夹
每个应用都有自己的/Documents文件夹,且仅能读写各自/Documents目录中的内容。
2、每个应用程序沙盒都应包含以下三个目录:
- Documents:数据存储(应用程序启用iTunes文件分享功能,则用户可以在iTunes中看到目录的内容,以及应用程序创建的所有子目录,还可以对其更新文件。)
- Library:数据存储(存放不想分享给用户的文件,需要时可创建自己的子目录)
- tmp:供应存储临时文件,当iOS设备执行同步时,iTunes不会备份tmp中的文件,在不需要这些文件时,应用负责删除tmp中的文件,以免占用文件系统的空间。
3、获取Documents目录
#
用C函数NSSearchPathForDirectoriesInDomain()来查找各种目录。它的很多选项都是专门为OS X设计的,在iOS上不会返回任何值,原因是iOS上并不存在这些位置(如Documents文件夹)或应用因为iOS的沙盒机制而没有访问位置的权限。
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=paths[0];
//常量NSDocumentDirectory表明我们正在查找Documents目录的路径
//常量NSUserDomainMask表明我们希望将搜索限制在应用的沙盒内。在OS X中,此常量表示我们我们希望该函数查看用户的主目录。虽然返回的是一个匹配路径的数组,但我们知道数组中位于索引0处的一定是Documents目录(因为每个应用中只有一个Documents目录,只有一个目录符合指定的条件)
#
可以在检索到的路径结尾附加另一个字符串来创建文件名,要使用方法NSString(即stringByAppendingPathComponent方法)
NSString *filename=[documentsDirectory stringByAppendingPathComponent:@"theFile.txt"];
//完成此调用后,filename就包含了指向应用Documents目录中的theFile.txt文件的完整路径,可以使用filename来创建、读取和写入文件了。
#
可以在同样的C函数中将NSSearchPathDirectory.NSLibraryDirectory作为第一个参数来获取Library目录的位置。
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory=paths[0];
4、获取tmp目录
NSString *tempPath=NSTemporaryDirectory();//找到该临时文件
NSString *tempFile=[tempPath stringByAppendingPathComponent:@"tempFile.txt"];//在路径结尾处符文件名,就可以创建指向该目录下文件的路径。
//名为NSTemporaryDirectory()的Foundation函数将返回一个字符串,该字符串包含到临时目录的完整路径。