iPhone會(huì)為每一個(gè)應(yīng)用程序生成一個(gè)私有目錄,這個(gè)目錄位于:
/Users/sundfsun2009/Library/Application Support/iPhone Simulator/User/Applications下,
并隨即生成一個(gè)數(shù)字字母串作為目錄名,在每一次應(yīng)用程序啟動(dòng)時(shí),這個(gè)字母數(shù)字串都是不同于上一次。
所以通常使用Documents目錄進(jìn)行數(shù)據(jù)持久化的保存,而這個(gè)Documents目錄可以通過:
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserdomainMask,YES) 得到。
代碼如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"path:? %@",path);
打印結(jié)果如下:
path:? /Users/apple/Library/Application Support/iPhone Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7/Documents
而通過 NSHomeDirectory()也可以得到程序的目錄,代碼如下:
NSString *destPath = NSHomeDirectory();
NSLog(@"path:? %@",destPath);
打印結(jié)果如下:
path:? /Users/apple/Library/Application Support/iPhone Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7
看看兩者打印出來的結(jié)果,我們可以看出這兩種方法的不同
2.
[objc] view plain copy
在CODE上查看代碼片派生到我的代碼片
(NSString *)dataFilePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:@"shoppingCar.plist"];
}
NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
//下面是對(duì)該文件進(jìn)行制定路徑的保存
[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];
//取得一個(gè)目錄下得所有文件名
NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
//讀取某個(gè)文件
NSData *data = [fm contentsAtPath:[self dataFilePath]];
//或者
NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}
因?yàn)閼?yīng)用是在沙箱(sandbox)中的,在文件讀寫權(quán)限上受到限制,只能在幾個(gè)目錄下讀寫文件:
Documents:應(yīng)用中用戶數(shù)據(jù)可以放在這里,iTunes備份和恢復(fù)的時(shí)候會(huì)包括此目錄
tmp:存放臨時(shí)文件,iTunes不會(huì)備份和恢復(fù)此目錄,此目錄下文件可能會(huì)在應(yīng)用退出后刪除
Library/Caches:存放緩存文件,iTunes不會(huì)備份此目錄,此目錄下文件不會(huì)在應(yīng)用退出刪除
在Documents目錄下創(chuàng)建文件
代碼如下:

因?yàn)閼?yīng)用是在沙箱(sandbox)中的,在文件讀寫權(quán)限上受到限制,只能在幾個(gè)目錄下讀寫文件:
Documents:應(yīng)用中用戶數(shù)據(jù)可以放在這里,iTunes備份和恢復(fù)的時(shí)候會(huì)包括此目錄
tmp:存放臨時(shí)文件,iTunes不會(huì)備份和恢復(fù)此目錄,此目錄下文件可能會(huì)在應(yīng)用退出后刪除
Library/Caches:存放緩存文件,iTunes不會(huì)備份此目錄,此目錄下文件不會(huì)在應(yīng)用退出刪除

這個(gè)主要就是返回一個(gè)絕對(duì)路徑用來存放我們需要儲(chǔ)存的文件。