app安裝到蘋果手機上,會產生兩個路徑 ,分別為.app(應用程序安裝目錄)和應用程序的沙盒(應用程序保存數據的目錄,如應用配置信息、緩存的文件等)。
一、路徑獲取方法。
通過NSBundle獲取路徑獲取.app文件路徑
// bundle 路徑 NSString *bundlePath = [NSBundle mainBundle].bundlePath; NSLog(@"%@",bundlePath);
通過NSHomeDirectory獲取沙盒路徑
//沙盒的路徑 NSString *shaPath = NSHomeDirectory(); NSLog(@"%@",shaPath);
- 通過輸出欄信息前往/Users/xiejiwei/Library/Developer/CoreSimulator/Devices/4512C44C-3610-48BE-B29D-B05913DE11A7/data/Containers/Data/Application/5BB3D373-E89F-4D71-AD47-7A640DCAFF4E文件夾可以
- 得到一個文件夾,內部包含Document,library(內部包含Caches和Preferences文件),tmp三個文件夾,獲取文件夾路徑的方法如下。
- 我們可以通過下面三種方法獲取Document路徑。
1 //1. 不能確定 加不加 斜杠 2 NSString *shaPath = NSHomeDirectory(); 3 NSString *docPath = [shaPath stringByAppendingString:@"/Documents"]; 4 NSLog(@"%@",docPath); 5 //2. 自動判斷是否 有斜杠 如果沒有自動添加 6 NSString *docPath = [shaPath stringByAppendingPathComponent:@"Documents"]; 7 NSLog(@"%@",docPath); 8 //3. 自動獲取 路徑 9 NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; 10 NSLog(@"%@",docPath);
//獲取Library路徑 NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"%@",libPath);
//獲取Tmp路徑 NSString *tmpPath = NSTemporaryDirectory(); NSLog(@"%@",tmpPath);
//獲取Cache路徑 NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSLog(@"%@",cachePath);
二、app中保存數據的分類
目前常用的5中存儲方法
•Preference(偏好設置)
–本質還是通過“plist”來存儲數據,但是使用簡單(無序關注文件、文件夾路徑和名稱)。
•NSKeyedArchiver歸檔(NSCoding)
–把任何對象,直接保存為文件的方式。
•SQLite3
–當非常大量的數據存儲時使用。
•CoreData
–就是對SQLite的封裝。
三、應用沙盒結構分析
•每個iOS應用都有自己的應用沙盒(應用沙盒就是應用的文件夾),與其他文件系統隔離。應用必須呆在自己的沙盒里,其他應用不能訪問該沙盒。
•應用沙盒的文件系統目錄如下:
Documents:保存應用運行時生成的需要持久化的數據,iTunes同步設備時會備份該目錄。例如,游戲應用可將游戲存檔保存在該目錄。保存相對重要的數據。
Tmp:保存應用運行時所需的臨時數據,使用完畢后再將相應的文件從該目錄刪除。應用沒有運行時,系統也可能會清除該目錄下的文件。iTunes同步設備時不會備份該目錄。保存不重要的並且大的數據。
Library/Caches:保存應用運行時生成的需要持久化的數據,iTunes同步設備時不會備份該目錄。一般存儲體積大、不需要備份的非重要數據
Library/Preference:保存應用的所有偏好設置,iOS的Settings(設置)應用會在該目錄中查找應用的設置信息。iTunes同步設備時會備份該目錄。該目錄由系統管理, 無需我們來管理。通常用來存儲一些基本的軟件配置信息, 比如記住密碼、自動登錄等。
