iOS沙盒目錄

每個iOS應(yīng)用SDK都被限制在“沙盒”中,“沙盒”相當(dāng)于一個加了僅主人可見權(quán)限的文件夾,蘋果對沙盒有以下幾條限制。

1、應(yīng)用程序可以在自己的沙盒里運作,但是不能訪問任何其他應(yīng)用程序的沙盒。

2、應(yīng)用程序間不能共享數(shù)據(jù),沙盒里的文件不能被復(fù)制到其他應(yīng)用程序文件夾中,也不能把其他應(yīng)用程序文件夾中的文件復(fù)制到沙盒里。

3、蘋果禁止任何讀、寫沙盒以外的文件,禁止應(yīng)用程序?qū)?nèi)容寫到沙盒以外的文件夾中。

4、沙盒根目錄里有三個文件夾:Documents,一般應(yīng)該把應(yīng)用程序的數(shù)據(jù)文件存到這個文件夾里,用于存儲用戶數(shù)據(jù)或其他應(yīng)該定期備份的信息。Library,下有兩個文件夾,Caches存儲應(yīng)用程序再次啟動所需的信息,Preferences包含應(yīng)用程序偏好設(shè)置文件,不過不要在這里修改偏好設(shè)置。temp,存放臨時文件,即應(yīng)用程序再次啟動不需要的文件。

沙盒根目錄里有三個文件夾分別是:documents,tmp,Library。

1、Documents 目錄:您應(yīng)該將所有de應(yīng)用程序數(shù)據(jù)文件寫入到這個目錄下。這個目錄用于存儲用戶數(shù)據(jù)或其它應(yīng)該定期備份的信息。

2、AppName.app 目錄:這是應(yīng)用程序的程序包目錄,包含應(yīng)用程序的本身。由于應(yīng)用程序必須經(jīng)過簽名,所以您在運行時不能對這個目錄中的內(nèi)容進(jìn)行修改,否則可能會使應(yīng)用程序無法啟動。

3、Library 目錄:這個目錄下有兩個子目錄:Caches 和 Preferences

Preferences 目錄:包含應(yīng)用程序的偏好設(shè)置文件。您不應(yīng)該直接創(chuàng)建偏好設(shè)置文件,而是應(yīng)該使用NSUserDefaults類來取得和設(shè)置應(yīng)用程序的偏好.

Caches 目錄:用于存放應(yīng)用程序?qū)S玫闹С治募4鎽?yīng)用程序再次啟動過程中需要的信息。

4、tmp 目錄:這個目錄用于存放臨時文件,保存應(yīng)用程序再次啟動過程中不需要的信息。

iOS沙盒(sandbox)中的幾個目錄獲取方式:

//?獲取沙盒主目錄路徑

NSString?*homeDir?=?NSHomeDirectory();

//?獲取Documents目錄路徑

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

NSString?*docDir?=?[paths?objectAtIndex:0];

//?獲取Caches目錄路徑

NSArray?*paths?=?NSSearchPathForDirectoriesInDomains(NSCachesDirectory,?NSUserDomainMask,?YES);

NSString?*cachesDir?=?[paths?objectAtIndex:0];

//?獲取tmp目錄路徑

NSString?*tmpDir?=??NSTemporaryDirectory();

//?獲取當(dāng)前程序包中一個圖片資源(apple.png)路徑

NSString?*imagePath?=?[[NSBundle?mainBundle]?pathForResource:@"apple"?ofType:@"png"];

UIImage?*appleImage?=?[[UIImage?alloc]?initWithContentsOfFile:imagePath];

例子:

NSFileManager* fm=[NSFileManager defaultManager];

if(![fm fileExistsAtPath:[self dataFilePath]]){

//下面是對該文件進(jìn)行制定路徑的保存

[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]];

}

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

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

  • ** 前言:**處于安全考慮,iOS系統(tǒng)的沙盒機(jī)制規(guī)定每個應(yīng)用都只能訪問當(dāng)前沙盒目錄下面的文件(也有例外,比如在用...
    小木___Boy閱讀 48,082評論 6 89
  • 出于安全考慮,iOS系統(tǒng)的沙盒機(jī)制規(guī)定每個應(yīng)用都只能訪問當(dāng)前沙盒目錄下面的文件(也有例外,比如系統(tǒng)通訊錄能在用戶授...
    Anticipate_91閱讀 571評論 0 3
  • 前言:出于安全考慮,iOS系統(tǒng)的沙盒機(jī)制規(guī)定每個應(yīng)用都只能訪問當(dāng)前沙盒目錄下面的文件(系統(tǒng)允許授權(quán)的文件除外,比如...
    漫雪思舟閱讀 831評論 2 1
  • iOS沙盒目錄結(jié)構(gòu)解析 出于安全考慮,iOS系統(tǒng)的沙盒機(jī)制規(guī)定每個應(yīng)用都只能訪問當(dāng)前沙盒目錄下面的文件(也有例外,...
    Coder_Fsh_Messi閱讀 1,693評論 2 24
  • /01/ 近一年以來睡眠都及其好,好到我嚴(yán)重懷疑自己得了嗜睡癥。從小就知道失眠是一種什么感覺,如今聽到失眠兩個字恍...
    路汐同學(xué)閱讀 334評論 0 1

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