国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

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

2019-10-21 18:57:20
字體:
供稿:網(wǎng)友
這篇文章主要介紹了舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件,示例代碼為傳統(tǒng)的Obejective-C,需要的朋友可以參考下
 

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

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

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

 

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

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

現(xiàn)在能看到資源庫文件夾了。
舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件
打開資源庫后找到/Application Support/iPhone Simulator/文件夾。這里面就是模擬器的各個(gè)程序的沙盒目錄了。
舉例詳解iOS開發(fā)過程中的沙盒機(jī)制與文件
方法2、這種方法更方便,在Finder上點(diǎn)->前往  然后按住"option"鍵,就會(huì)出現(xiàn)"資源庫",其他同上

 

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

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

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

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

復(fù)制代碼代碼如下:

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

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

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

  
4、獲取Library目錄 
復(fù)制代碼代碼如下:

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

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

  
6、寫入文件 
復(fù)制代碼代碼如下:

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、寫入文件 
復(fù)制代碼代碼如下:

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、判斷一個(gè)文件是否存在,傳入全路徑(fileExistsAtPath)

復(fù)制代碼代碼如下:

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

 

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

復(fù)制代碼代碼如下:

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)建文件

復(fù)制代碼代碼如下:

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、獲取目錄列里所有文件名
兩種方法獲取:subpathsOfDirectoryAtPath 和subpathsAtPath

復(fù)制代碼代碼如下:

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使用操作當(dāng)前目錄

復(fù)制代碼代碼如下:

//創(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、刪除文件
復(fù)制代碼代碼如下:

[fileManager removeItemAtPath:fileName error:nil]; 


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 通化县| 牟定县| 阆中市| 班玛县| 嘉定区| 孝义市| 延长县| 缙云县| 阿勒泰市| 健康| 连江县| 嘉义市| 长春市| 大荔县| 柯坪县| 辉南县| 和顺县| 开原市| 千阳县| 巴彦淖尔市| 武宣县| 西林县| 长顺县| 铜鼓县| 涿州市| 东莞市| 库伦旗| 千阳县| 揭西县| 紫金县| 新竹县| 宣武区| 嘉兴市| 化隆| 颍上县| 利川市| 齐河县| 蓝山县| 农安县| 八宿县| 当涂县|