本文共 2593 字,大约阅读时间需要 8 分钟。
ios中的沙盒机制是一种安全机制。每个iOS程序都有一个独立的文件系统,只能在对应的文件系统中操作,此区域被称为沙盒。
NSString *homeDir=NSHomeDirectory();
NSLog(@“沙盒根目录:%@”,homeDir);
Documents,用户数据文件(如从网上下载的图片视频等),程序更新,连接iTunes自动备份
NSString *docDir=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO) lastObject];
NSLog(@“Documents目录:%@”,docDir);
Library,包含caches和preferences,可新建子文件夹,除cache外都可以被iTunes备份,希望备份但不想被用户看到的数据
NSString *libDir=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@“Library目录:%@”,libDir);
preferences,偏好设置,NSUserDefaults类创建的数据,plist文件,会被iTunes备份。
caches,使用时产生的支持文件缓存文件日志文件,不会备份,可能会被清理。
NSString *cachesDir=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, NO) firstObject];
NSLog(@“caches目录:%@”,cachesDir);
tmp,程序运行时产生的临时文件,重启会被清空,不会被itunes备份。
NSString*tmpDir=NSTemporaryDirectory();
NSLog(@“tmp目录:%@”,tmpDir);
NSBundle,程序包目录,程序需要的资源(图像,声音,编译好的代码,nib文件),不能在运行时修改程序包目录,否则无法启动。
NSString *bundle=[[NSBundle mainBundle] bundlePath];
NSLog(@“程序包目录:%@”,bundle);
NSBundle获取程序资源的路径:
NSString *mp4path=[[NSBundle mainBundle] pathForResource:@“shipin” ofType:@“mp4”];
NSLog(@“取:%@”,mp4path);
NSBundle加载nib文件
cell=[[[NSBundle mainBundle]loadNibNamed:cellId owner:self options:nil] lastObject];
[NSSearchPathForDirectoriesInDomains(“想要查找的目录”,“想从哪个路径区域保护区查找”,“YES/NO”) firstObject];
1.想要查找的目录 NSApplicationDirectory =1, // 到applications (Applications)目录下 NSDemoApplicationDirectory, // 到Applications/Demos目录下 NSDeveloperApplicationDirectory, // 到Developer/Applications目录下. NSAdminApplicationDirectory, // 到Applications/Utilities目录下 NSLibraryDirectory, // 到Library目录下 NSDeveloperDirectory, // 到Developer目录下. NSUserDirectory, // 到用户的主目录下 NSDocumentationDirectory, // 到documentation (Documentation)的目录下 NSDocumentDirectory, // 到documents (Documents)目录下 NSCoreServiceDirectory, // CoreServices目录的位置 (System/Library/CoreServices) NSAutosavedInformationDirectory NS_ENUM_AVAILABLE(10_6, 4_0) =11, // 自动保存的文档位置(Documents/Autosaved) NSDesktopDirectory =12, // 本地用户的桌面2.想从哪个路径区域保护区查找
typedef NS_OPTIONS(NSUInteger, NSSearchPathDomainMask) { NSUserDomainMask =1, // 用户的主目录 NSLocalDomainMask =2, // 当前机器的本地目录 NSNetworkDomainMask =4, //在网络中公开可用的位置 NSSystemDomainMask =8, // 被苹果系统提供的,不可更改的位置 (/System) NSAllDomainsMask = 0x0ffff // 上述所有及未来的位置 }3.YES:完整路径
NO:路径的沙盒根目录部分用~代替,如~/Library/Caches4.lastObject,firstObject,数组的两个对象方法,提取数组的第一个和最后一个元素。当数组元素只有一个时,结果一样。
无论是存储对象还是获取沙盒目录数组中文件路径,经常会用到[xx数组 firstObject], [xx数组 lastObject]。转载地址:http://ypwin.baihongyu.com/