NSSearchPathForDirectoriesInDomains用法

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ǔ)存的文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,619評(píng)論 30 472
  • iphone沙箱模型的有四個(gè)文件夾,分別是什么,永久數(shù)據(jù)存儲(chǔ)一般放在什么位置,得到模擬器的路徑的簡(jiǎn)單方式是什么. ...
    Lydia_qing閱讀 19,171評(píng)論 0 17
  • 1、常見的NSFileManager文件方法 -(NSData *)contentsAtPath:path//從一...
    少年不知代碼貴閱讀 1,171評(píng)論 1 1
  • 循環(huán)引用:http://ios.jobbole.com/82077/類別的作用功能:1.擴(kuò)充現(xiàn)有類的功能2.對(duì)現(xiàn)有...
    得一切從簡(jiǎn)閱讀 581評(píng)論 0 1
  • 原來不管什么時(shí)候,都還是一樣不知所措啊 已經(jīng)那么清醒地知道 不過是再一次撞向看似透明而不存在的魚缸 感覺一點(diǎn)點(diǎn)清晰...
    松鼠閱讀 415評(píng)論 0 0

友情鏈接更多精彩內(nèi)容