iOS應用程序只能在爲該改程序建立的文件系統中讀取文件,不能夠去其它地方訪問,此區域被稱爲沙盒(sandbox)。全部的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。sql
每一個應用程序都有本身的存儲空間 應用程序不能翻過本身的圍牆去訪問別的存儲空間的內容 應用程序請求的數據都要經過權限檢測,假如不符合條件的話,不會被放行數據庫
若是要訪問到其餘 App 的範圍,必需要獲取管理員許可才行,好比地理位置,相冊,通信錄,話筒等。這是蘋果系統的哲學,蘋果認爲只有把各個 App 孤立起來才能營造良好的用戶體驗和安全性。安全
##打開沙盒的方法:app
右擊Finder,選擇 Go to Folderiphone
複製上:「~/Library/Application Support/iPhone Simulator/」atom
這回打開iPhone Simulator的文件夾,選擇7.1版本模擬器,便可看到
url
#沙盒詳解: ##第1、什麼是沙盒 IOS應用程序只能在爲該改程序建立的文件系統中讀取文件,不能夠去其它地方訪問,此區域被成爲沙盒設計
##第2、保存內容 全部的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等code
##第3、做用 iOS沙盒爲程序運行提供了很好的安全保障sqlite
##第4、目錄 一、Documents目錄:這個目錄用於存儲用戶數據或其它應該按期備份的信息,蘋果建議將程序中創建的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄。
二、AppName.app 目錄:這是應用程序的程序包目錄,包含應用程序的自己。因爲應用程序必須通過簽名,因此您在運行時不能對這個目錄中的內容進行修改,不然可能會使應用程序沒法啓動。
三、Library目錄:這個目錄下有兩個子目錄:Caches 和 Preferences
Preferences 目錄包含應用程序的偏好設置文件。您不該該直接建立偏好設置文件,而是應該使用NSUserDefaults類來取得和設置應用程序的偏好
Caches 目錄用於存放應用程序專用的支持文件,保存應用程序再次啓動過程當中須要的信息。
四、tmp 目錄:這個目錄用於存放臨時文件,保存應用程序再次啓動過程當中不須要的信息,重啓後清空
itues和iphone同步時,備份全部的Document和library文件
##第5、獲取不一樣目錄的方法 一、獲取document目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
二、獲取cache目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString* cachesDirectory = [paths objectAtIndex:0];
三、獲取tmp目錄路徑的方法:
NSString *tmpDir = NSTemporaryDirectory();
四、獲取應用程序程序包中資源文件路徑的方法: //例如獲取程序包中一個圖片資源(apple.png)路徑的方法:
NSString *imagePath = [[NSBundlemainBundle]pathForResource:@"apple"ofType:@"png"];
##第6、文件I/O操做 ###1,將數據寫到Documents目錄:
- (BOOL)writeApplicationData:(NSData*)data toFile:(NSString*)fileName { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *docDir = [paths objectAtIndex:0]; if(!docDir) { NSLog(@"Documents directory not found!"); return NO; } NSString *filePath = [docDir stringByAppendingPathComponent:fileName]; return [data writeToFile:filePath atomically:YES]; }
###2,從Documents目錄讀取數據:
- (NSData *)applicationDataFromFile:(NSString *)fileName { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *docDir = [paths objectAtIndex:0]; NSString *filePath = [docDir stringByAppendingPathComponent:fileName]; NSData *data = [[[NSData alloc]initWithContentsOfFile:filePath]autorelease]; return data; }
在沙盒中創建SQLite數據庫文件名
// 0.得到沙盒中的數據庫文件名 NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"]; // 1.建立(打開)數據庫,(若是數據庫文件不存在,會自動建立) // 將OC類型轉爲C語言類型filename.UTF8String int result = sqlite3_open(filename.UTF8String, &_db); if(result == SQLITE_OK) { NSLog(@"成功打開數據庫"); }
##如何在鎖屏界面顯示歌詞?
從技術上來講,鎖屏界面上顯示歌詞是不可能完成的,但這絕對難不倒機智的產品汪。利用鎖屏界面的封面圖片,爲每一句歌詞生成一張圖片,根據歌曲的時間軸,不間斷的給你一次又一次的換壁紙...
這個偉大的創新來自偉大的 QQ 音樂,聽說這個功能的設計師還得到了騰訊內部的設計大獎——固然如今幾乎每一個音樂 App 都有這樣的功能。想着一遍又一遍被強姦的封面壁紙,嚇得我趕忙把這個功能給關閉了。
更多關於沙盒的文章沙盒