filesaver.js 保存文件路径_iOS把UIImage保存到沙盒目录下以及沙盒目录概述
題記
—— 執劍天涯,從你的點滴積累開始,所及之處,必精益求精。
本文章概述
1、保存 UIImage 到沙盒Document目錄下與讀取Document中保存的圖片的方法
2、沙盒機制介紹 與 各目錄說明 以及獲取方法概述
3、NSSearchPathForDirectoriesInDomains 函數方法概述
1 保存 UIImage 到沙盒目錄下
- (void)saveImage:(UIImage *)image {//獲取 Document 目錄路徑NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); // 構造保存文件的名稱 保存成功會返回YESNSString *filePath = [[paths objectAtIndex:0]stringByAppendingPathComponent: [NSString stringWithFormat:@"test.png"]]; //保存操作BOOL result =[UIImagePNGRepresentation(image)writeToFile:filePath atomically:YES]; if (result == YES) { NSLog(@"保存成功"); }else{ NSLog(@"保存失敗");} }2 獲取保存的圖片
- (void)getImage { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *filePath = [[paths objectAtIndex:0]stringByAppendingPathComponent: [NSString stringWithFormat:@"demo.png"]]; // 保存文件的名稱 UIImage *img = [UIImage imageWithContentsOfFile:filePath]; NSLog(@"=== %@", img); }3 沙盒機制介紹
每個iOS程序都有一個獨立的文件系統(存儲空間),而且只能在對應的文件系統中進行操作,此區域被稱為該應用的沙盒。可以說沙盒機制是一種安全體系。
應用必須待在自己的沙盒里,其他應用不能訪問該沙盒。所有的非代碼文件都要保存在此,例如屬性文件plist、文本文件、圖像、圖標、媒體資源等。沙盒是用來存入緩沖區的,APP關掉,緩存被自動清理。
3.1 沙盒目錄結構
如下圖所示為 蘋果官方提供的沙盒目錄結構
3.1.1 Documents
(1) 在上圖中,Sandbox 就是 MyApp的沙盒目錄空間,如在 MAC OS 中右鍵 MyApp.app 顯示程序包目錄。
(2)/Documents/ 保存應用程序的重要數據文件和用戶數據文件等。用戶數據基本上都放在這個位置(例如從網上下載的圖片或音樂文件),該文件夾在應用程序更新時會自動備份,在連接iTunes時也可以自動同步備份其中的數據
3.1.2 /Library 目錄
/Library 目錄 可以用來放置您希望被備份但不希望被用戶看到的數據。該路徑下的文件夾,除Caches以外,都會被iTunes備份,
- /Library/Caches(緩存)
保存應用程序使用時產生的支持文件和緩存文件(保存應用程序再次啟動過程中需要的信息),還有日志文件最好也放在這個目錄。iTunes 同步時不會備份該目錄并且可能被其他工具清理掉其中的數據。 - /Library/Preferences (偏好)保存應用程序的偏好設置文件(使用 NSUserDefaults( 這個就是放這) 類設置時創建,不應該手動創建;連iTunes可備份,在應用程序更新時會自動備份;plist文件就放在此處)。
3.1.3 /tmp/ 目錄
/tmp/ 保存應用運行時所需要的臨時數據,該路徑下的文件不會被iTunes備份。iphone 重啟時,會自動清除該目錄下所有文件;例如錄制視頻完成后是放在/temp/;所以應該將視頻文件從該文件夾轉移到相冊中,否則視頻文件就會被系統清理掉
3.2 獲取沙盒目錄代碼方法
// 獲取沙盒根目錄路徑NSString*homeDir = NSHomeDirectory();// 獲取Documents目錄路徑NSString*docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];//獲取Library的目錄路徑NSString*libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];// 獲取cache目錄路徑NSString*cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];// 獲取tmp目錄路徑NSString*tmpDir =NSTemporaryDirectory();// 獲取應用程序程序包中資源文件路徑的方法:NSLog(@"%@",[[NSBundlemainBundle] bundlePath]);NSString*imagePath = [[NSBundlemainBundle] pathForResource:@"apple"ofType:@"png"];UIImage*appleImage = [[UIImagealloc] initWithContentsOfFile:imagePath];4 NSSearchPathForDirectoriesInDomains
NSSearchPathForDirectoriesInDomains方法用于查找目錄,返回指定范圍內的指定名稱的目錄的路徑集合
4.1 參數一
directoryNSSearchPathDirectory類型的enum值,表明要搜索的目錄名稱,比如這里用NSDocumentDirectory表明我們要搜索的是Documents目錄。
如果我們將其換成NSCachesDirectory就表示我們搜索的是Library/Caches目錄
4.2 參數二
domainMaskNSSearchPathDomainMask類型的enum值,指定搜索范圍,這里的NSUserDomainMask表示搜索的范圍限制于當前應用的沙盒目錄。
還可以寫成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等
4.3 參數三
expandTildeBOOL值,表示是否展開波浪線。在iOS中的全寫形式是/User/userName,該值為YES即表示寫成全寫形式,為NO就表示直接寫成“~”。
完畢 每日分享 每日積累
總結
以上是生活随笔為你收集整理的filesaver.js 保存文件路径_iOS把UIImage保存到沙盒目录下以及沙盒目录概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浮点数例外 (核心已转储)_15000
- 下一篇: 正在CPU上运行的进程_进程的概念,系统