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.
- (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]]){
- //下面是對該文件進行制定路徑的保存
- [fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];
- //取得一個目錄下得所有文件名
- NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];
- //讀取某個文件
- NSData *data = [fm contentsAtPath:[self dataFilePath]];
- //或者
- NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
- }
因爲應用是在沙箱(sandbox)中的,在文件讀寫權限上受到限制,只能在幾個目錄下讀寫文件:
- Documents:應用中用戶數據可以放在這裏,iTunes備份和恢復的時候會包括此目錄
- tmp:存放臨時文件,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出後刪除
- Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
在Documents目錄下創建文件
代碼如下:
因爲應用是在沙箱(sandbox)中的,在文件讀寫權限上受到限制,只能在幾個目錄下讀寫文件:
- Documents:應用中用戶數據可以放在這裏,iTunes備份和恢復的時候會包括此目錄
- tmp:存放臨時文件,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出後刪除
- Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
這個主要就是返回一個絕對路徑用來存放我們需要儲存的文件。