iOS沙盒目录

来源:互联网 发布:update sql 编辑:程序博客网 时间:2024/05/16 11:36
1. 
     iPhone会为每一个应用程序生成一个私有目录,这个目录位于:\Users\mac\Library\Application Support\iPhone Simulator\6.1\Applications\F02D6C93-EA74-47FB-82F2-5ABBD7796F47,这一串数字每一次启动都不一样


2.
     所以通常使用Documents目录进行数据持久化的保存,而这个Documents目录可以通过:
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserdomainMask,YES) 得到
代码如下:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(@"path:   %@",path);
    打印结果如下:
    path:   /Users/apple/Library/Application Support/iPhone Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7/Documents
    
而通过 NSHomeDirectory()也可以得到程序的目录,代码如下:
    NSString *destPath = NSHomeDirectory();
    NSLog(@"path:   %@",destPath);
    打印结果如下:
    path:   /Users/apple/Library/Application Support/iPhone Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7
    看看两者打印出来的结果,我们可以看出这两种方法的不同
3.

因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:
Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

4. FOUNDATION_EXPORT NSArray*NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask, BOOL expandTilde);

//三个参数的意义:
enum {
NSApplicationDirectory = 1,//Supported applications (/Applications)
NSDemoApplicationDirectory,//Unsupported applications and demonstration versions
NSDeveloperApplicationDirectory,//Developer applications (/Developer/Applications)
NSAdminApplicationDirectory,//System and network administration applications
NSLibraryDirectory,//Various user-visible documentation, support, and configuration files (/Library)
NSDeveloperDirectory,//Developer resources (/Developer)
NSUserDirectory,//User home directories (/Users)
NSDocumentationDirectory,//
NSDocumentDirectory,//
NSCoreServiceDirectory,//Location of core services (System/Library/CoreServices)
NSAutosavedInformationDirectory = 11,//Location of user’s autosaved documents Library/Autosave Information
NSDesktopDirectory = 12,//
NSCachesDirectory = 13,//Location of discardable cache files (Library/Caches)
NSApplicationSupportDirectory = 14,//Location of application support files (Library/Application Support)
NSDownloadsDirectory = 15,//
NSInputMethodsDirectory = 16,//
NSMoviesDirectory = 17,//
NSMusicDirectory = 18,//
NSPicturesDirectory = 19,//
NSPrinterDescriptionDirectory = 20,//
NSSharedPublicDirectory = 21,//
NSPreferencePanesDirectory = 22,//
NSItemReplacementDirectory = 99,//
NSAllApplicationsDirectory = 100,//
NSAllLibrariesDirectory = 101//
};

typedef NSUInteger NSSearchPathDirectory;
 
 
enum {
NSUserDomainMask = 1,//用户主目录中
NSLocalDomainMask = 2,//当前机器中
NSNetworkDomainMask = 4,//网络中可见的主机
NSSystemDomainMask = 8,//系统目录,不可修改(/System)
NSAllDomainsMask = 0x0ffff,//全部
};
typedef NSUInteger NSSearchPathDomainMask;
 
expandTilde = YES
展开成完整路径

0 0