最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

舉例詳解iOS開發(fā)過程中的沙盒機制與文件

 更新時間:2015年09月18日 09:40:39   作者:TommyYaphetS  
這篇文章主要介紹了舉例詳解iOS開發(fā)過程中的沙盒機制與文件,示例代碼為傳統(tǒng)的Obejective-C,需要的朋友可以參考下

iOS沙盒機制
 iOS應(yīng)用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件,不可以去其它地方訪問,此區(qū)域被成為沙盒,所以所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。

  • 每個應(yīng)用程序都有自己的存儲空間
  • 應(yīng)用程序不能翻過自己的圍墻去訪問別的存儲空間的內(nèi)容

打開模擬器沙盒目錄
方法1、可以設(shè)置顯示隱藏文件,然后在Finder下直接打開。設(shè)置查看隱藏文件的方法如下:打開終端,輸入命名
<p class="p1">顯示Mac隱藏文件的命令:

復制代碼 代碼如下:
defaults write com.apple.finder AppleShowAllFiles -bool true</p><p class="p1">

隱藏Mac隱藏文件的命令:
復制代碼 代碼如下:
defaults write com.apple.finder AppleShowAllFiles -bool false</p>

現(xiàn)在能看到資源庫文件夾了。

打開資源庫后找到/Application Support/iPhone Simulator/文件夾。這里面就是模擬器的各個程序的沙盒目錄了。

方法2、這種方法更方便,在Finder上點->前往  然后按住"option"鍵,就會出現(xiàn)"資源庫",其他同上

目錄結(jié)構(gòu)
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp。因為應(yīng)用的沙盒機制,應(yīng)用只能在幾個目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設(shè)置或其它狀態(tài)信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應(yīng)用退出刪除
tmp:提供一個即時創(chuàng)建臨時文件的地方。

iTunes在與iPhone同步時,備份所有的Documents和Library文件。
iPhone在重啟時,會丟棄所有的tmp文件。
這是上面提到的三個目錄 :Documents、Library、 tmp

幾個常用的代碼示例:
1、獲取程序的Home目錄 

復制代碼 代碼如下:

NSString *homeDirectory = NSHomeDirectory();   
NSLog(@"path:%@", homeDirectory);
  
 
2、獲取document目錄 
復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   
NSLog(@"path:%@", path); 
  
 
3、獲取Cache目錄 
復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   
NSLog(@"%@", path);   

 
4、獲取Library目錄 
復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   
NSLog(@"%@", path); 
 
 
5、獲取Tmp目錄 
復制代碼 代碼如下:

NSString *tmpDir = NSTemporaryDirectory();   
 NSLog(@"%@", tmpDir);  

 
6、寫入文件 
復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
    NSString *docDir = [paths objectAtIndex:0];   
    if (!docDir) {   
        NSLog(@"Documents 目錄未找到");           
    }   
    NSArray *array = [[NSArray alloc] initWithObjects:@"內(nèi)容",@"content",nil];   
    NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];   
    [array writeToFile:filePath atomically:YES]; 

 
7、寫入文件 
復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
    NSString *docDir = [paths objectAtIndex:0];   
    NSString *filePath = [docDir stringByAppendingPathComponent:@"testFile.txt"];   
    NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];   
    NSLog(@"%@", array); 

8、判斷一個文件是否存在,傳入全路徑(fileExistsAtPath)

復制代碼 代碼如下:

// 創(chuàng)建文件管理器 
NSFileManager * fileManager = [NSFileManager defaultManager]; 
 
NSString * documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; 
NSString * filePath = [documents stringByAppendingPathComponent:@"test"]; 
 
    // 判斷一個文件是否存在,傳入全路徑 
    if ([fileManager fileExistsAtPath:filePath]) { 
        NSLog(@"it is exit"); 
    } 

9、在Documents里創(chuàng)建目錄

復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
   NSString *documentsDirectory = [paths objectAtIndex:0];   
   NSLog(@"documentsDirectory%@",documentsDirectory);   
   NSFileManager *fileManager = [NSFileManager defaultManager];   
   NSString *testDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];   
   // 創(chuàng)建目錄  
   [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];

10、在目錄下創(chuàng)建文件

復制代碼 代碼如下:

NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test00.txt"];   
NSString *testPath2 = [testDirectory stringByAppendingPathComponent:@"test22.txt"];   
NSString *testPath3 = [testDirectory stringByAppendingPathComponent:@"test33.txt"];   
 
 
NSString *string = @"寫入內(nèi)容,write String"; 
[fileManager createFileAtPath:testPath contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 
[fileManager createFileAtPath:testPath2 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 
[fileManager createFileAtPath:testPath3 contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 

11、獲取目錄列里所有文件名
兩種方法獲?。簊ubpathsOfDirectoryAtPath 和subpathsAtPath

復制代碼 代碼如下:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
NSString *documentsDirectory = [paths objectAtIndex:0];   
NSLog(@"documentsDirectory%@",documentsDirectory);   
NSFileManager *fileManage = [NSFileManager defaultManager];   
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@"test"];   
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];  
NSLog(@"%@",file);   
NSArray *files = [fileManage subpathsAtPath: myDirectory ];  
NSLog(@"%@",files); 

12、fileManager使用操作當前目錄

復制代碼 代碼如下:

//創(chuàng)建文件管理器 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    //更改到待操作的目錄下 
    [fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]]; 
    //創(chuàng)建文件fileName文件名稱,contents文件的內(nèi)容,如果開始沒有內(nèi)容可以設(shè)置為nil,attributes文件的屬性,初始為nil 
    NSString * fileName = @"testFileNSFileManager.txt"; 
    NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil]; 
    [fileManager createFileAtPath:fileName contents:array attributes:nil]; 

13、刪除文件
復制代碼 代碼如下:

[fileManager removeItemAtPath:fileName error:nil]; 

相關(guān)文章

  • iOS擼一個簡單路由Router的實現(xiàn)代碼

    iOS擼一個簡單路由Router的實現(xiàn)代碼

    這篇文章主要介紹了iOS擼一個簡單路由Router的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • iOS版微信朋友圈識別圖片位置信息 如何實現(xiàn)?

    iOS版微信朋友圈識別圖片位置信息 如何實現(xiàn)?

    這篇文章主要為大家詳細介紹了iOS版微信朋友圈識別圖片位置信息的實現(xiàn)方法
    2016-10-10
  • iOS?項目嵌入Flutter?運行(最新推薦)

    iOS?項目嵌入Flutter?運行(最新推薦)

    這篇文章主要介紹了iOS?項目嵌入Flutter?運行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 教你如何解決XCODE升級后插件不能用問題

    教你如何解決XCODE升級后插件不能用問題

    Xcode 每次更新有個很頭疼的問題,就是插件都會失效,要重裝。 不得不說好多插件還是非常方便能提高效率。那么如何來解決這個問題呢,今天我們就來探討下。
    2015-11-11
  • iOS UITextView 首行縮進 撤銷輸入 反撤銷輸入的實現(xiàn)代碼

    iOS UITextView 首行縮進 撤銷輸入 反撤銷輸入的實現(xiàn)代碼

    本文是腳本之家小編給大家分享的iOS UITextView 首行縮進 撤銷輸入 反撤銷輸入的實現(xiàn)代碼,需要的朋友參考下吧
    2017-09-09
  • iOS touch事件區(qū)分單擊雙擊響應(yīng)的方法

    iOS touch事件區(qū)分單擊雙擊響應(yīng)的方法

    如果您的 iPhone 應(yīng)用里有個 view,既有單擊操作又有雙擊操作。用戶雙擊 view 時,總是先執(zhí)行一遍單擊的操作再執(zhí)行雙擊的操作。所以直接判斷時就會發(fā)現(xiàn)不能直接進入雙擊操作。下面是區(qū)分 touch 事件是單擊還是雙擊的方法,需要的朋友可以參考下
    2016-10-10
  • IOS 開發(fā)之應(yīng)用喚起實現(xiàn)原理詳解

    IOS 開發(fā)之應(yīng)用喚起實現(xiàn)原理詳解

    這篇文章主要介紹了IOS 開發(fā)之應(yīng)用喚起實現(xiàn)原理詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • iOS新版微信底部返回橫條問題的解決

    iOS新版微信底部返回橫條問題的解決

    這篇文章主要介紹了iOS新版微信底部返回橫條問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • iOS runtime動態(tài)添加方法示例詳解

    iOS runtime動態(tài)添加方法示例詳解

    Runtime是想要做好iOS開發(fā),或者說是真正的深刻的掌握OC這門語言所必需理解的東西。下面這篇文章主要給大家介紹了關(guān)于iOS runtime動態(tài)添加方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2018-01-01
  • iOS消息遠程推送通知

    iOS消息遠程推送通知

    這篇文章主要為大家詳細介紹了iOS消息遠程推送通知代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

潞西市| 友谊县| 锡林浩特市| 偏关县| 乐业县| 惠安县| 尚义县| 黑龙江省| 政和县| 胶南市| 增城市| 成武县| 沙河市| 汨罗市| 西吉县| 上蔡县| 宜章县| 河源市| 贵南县| 镇宁| 彩票| 麻城市| 岐山县| 岳普湖县| 铜山县| 梓潼县| 元氏县| 连州市| 河源市| 舟山市| 巨鹿县| 中西区| 宣恩县| 宁海县| 任丘市| 安宁市| 潞城市| 南溪县| 巴林左旗| 安仁县| 泰顺县|