NSSearchPathForDirectoriesInDomains詳細用法

iPhone會爲每一個應用程序生成一個私有目錄,這個目錄位於:

/Users/sundfsun2009/Library/Application Support/iPhone Simulator/User/Applications下,

並隨即生成一個數字字母串作爲目錄名,在每一次應用程序啓動時,這個字母數字串都是不同於上一次。

 

所以通常使用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

    看看兩者打印出來的結果,我們可以看出這兩種方法的不同

 

2.

[objc] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1.  (NSString *)dataFilePath {  
  2. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  3. NSString *documentsDirectory = [paths objectAtIndex:0];  
  4. return [documentsDirectory stringByAppendingPathComponent:@"shoppingCar.plist"];  
  5. }  
  6. NSFileManager* fm=[NSFileManager defaultManager];  
  7. if(![fm fileExistsAtPath:[self dataFilePath]]){  
  8. //下面是對該文件進行制定路徑的保存  
  9. [fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];  
  10. //取得一個目錄下得所有文件名  
  11. NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];  
  12. //讀取某個文件  
  13. NSData *data = [fm contentsAtPath:[self dataFilePath]];  
  14. //或者  
  15. NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];  
  16. }  

 

因爲應用是在沙箱(sandbox)中的,在文件讀寫權限上受到限制,只能在幾個目錄下讀寫文件:

  • Documents:應用中用戶數據可以放在這裏,iTunes備份和恢復的時候會包括此目錄
  • tmp:存放臨時文件,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出後刪除
  • Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除

在Documents目錄下創建文件

代碼如下:

因爲應用是在沙箱(sandbox)中的,在文件讀寫權限上受到限制,只能在幾個目錄下讀寫文件:

  • Documents:應用中用戶數據可以放在這裏,iTunes備份和恢復的時候會包括此目錄
  • tmp:存放臨時文件,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出後刪除
  • Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
  •  

這個主要就是返回一個絕對路徑用來存放我們需要儲存的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章