天天看點

App檔案目錄及存儲

from:http://blog.csdn.net/toddfox/article/details/5326575

1.對于一個運作在iPhone得app,它隻能通路自己根目錄下得一些檔案(所謂sandbox).

2.蘋果2008年釋出iPhone 2.0作業系統以來,這款手機首次被攻破。蘋果針對iPhone 2.0推出了一系列高端安全措施,包括在裝置核心中整合“沙盒”(sandbox),該技術可以對黑客攻擊起到限制作用。除此之外,蘋果還增加了加密簽名機制,進而增加了黑客的攻擊難度。

一個app釋出到iPhone上後,它得目錄結構如下:

1、其中得 app root 可以用 NSHomeDirectory() 通路到;

2、Documents 目錄就是我們可以用來寫入并儲存檔案得地方,一般可通過:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];

得到。

3、tmp 目錄我們可以在裡面寫入一些程式運作時需要用得資料,裡面寫入得資料在程式退出後會沒有。可以通過

NSString *NSTemporaryDirectory(void); 方法得到;

4、檔案一些主要操作可以通過NSFileManage 來操作,可以通過 [NSFileManger defaultManger] 得到它得執行個體。

相關得一些操作:

建立一個目錄: 比如要在Documents下面建立一個test目錄,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSLog(@”%@”,documentsDirectory);NSFileManager *fileManage = [NSFileManager defaultManager];NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“test”];BOOL ok = [fileManage createDirectoryAtPath:myDirectory attributes:nil];取得一個目錄下得所有檔案名: (如上面的myDirectory)可用 

NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil]; 或

NSArray *files = [fileManager subpathsAtPath: myDirectory ];

讀取某個檔案: 

NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路徑的檔案名

或直接用NSData 的類方法:

NSData *data = [NSData dataWithContentOfPath:myFilePath];

儲存某個檔案: 

可以用 NSFileManager的

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

或 NSData 的

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;