iOS學習筆記(十七)——檔案操作(NSFileManager)

來源:互聯網
上載者:User

       iOS的沙箱機制,應用只能訪問自己應用目錄下的檔案。iOS不像android,沒有SD卡概念,不能直接存取映像、視頻等內容。iOS應用產生的內容,像、檔案、緩衝內容等都必須儲存在自己的沙箱內。預設情況下,每個沙箱含有3個檔案夾:Documents, Library 和 tmp。Library包含Caches、Preferences目錄。

             

上面的完整路徑為:使用者->資產庫->Application Support->iPhone Simulator->6.1->Aplications

Documents:蘋果建議將程式建立產生的檔案以及應用瀏覽產生的檔案資料儲存在該目錄下,iTunes備份和恢複的時候會包括此目錄
Library:儲存程式的預設設定或其它狀態資訊;

Library/Caches:存放快取檔案,儲存應用的持久化資料,用於應用升級或者應用關閉後的資料儲存,不會被itunes同步,所以為了減少同步的時間,可以考慮將一些比較大的檔案而又不需要備份的檔案放到這個目錄下。

tmp:提供一個即時建立臨時檔案的地方,但不需要持久化,在應用關閉後,該目錄下的資料將刪除,也可能系統在程式不啟動並執行時候清除。

               

APP  Sandbox

iOS怎麼擷取沙箱路徑,怎麼操作檔案呢?下面給出答案。


擷取應用沙箱根路徑:

-(void)dirHome{    NSString *dirHome=NSHomeDirectory();        NSLog(@"app_home: %@",dirHome);}

擷取Documents目錄路徑:

//擷取Documents目錄-(NSString *)dirDoc{    //[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];    NSLog(@"app_home_doc: %@",documentsDirectory);    return documentsDirectory;}

擷取Library目錄路徑:

//擷取Library目錄-(void)dirLib{    //[NSHomeDirectory() stringByAppendingPathComponent:@"Library"];    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);    NSString *libraryDirectory = [paths objectAtIndex:0];    NSLog(@"app_home_lib: %@",libraryDirectory);}

擷取Cache目錄路徑:

//擷取Cache目錄-(void)dirCache{    NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);    NSString *cachePath = [cacPath objectAtIndex:0];    NSLog(@"app_home_lib_cache: %@",cachePath);}

擷取Tmp目錄路徑:

//擷取Tmp目錄-(void)dirTmp{    //[NSHomeDirectory() stringByAppendingPathComponent:@"tmp"];    NSString *tmpDirectory = NSTemporaryDirectory();    NSLog(@"app_home_tmp: %@",tmpDirectory);}

建立檔案夾:

//建立檔案夾-(void *)createDir{    NSString *documentsPath =[self dirDoc];    NSFileManager *fileManager = [NSFileManager defaultManager];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    // 建立目錄    BOOL res=[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];    if (res) {        NSLog(@"檔案夾建立成功");    }else        NSLog(@"檔案夾建立失敗"); }

建立檔案

//建立檔案-(void *)createFile{    NSString *documentsPath =[self dirDoc];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    NSFileManager *fileManager = [NSFileManager defaultManager];    NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];    BOOL res=[fileManager createFileAtPath:testPath contents:nil attributes:nil];    if (res) {        NSLog(@"檔案建立成功: %@" ,testPath);    }else        NSLog(@"檔案建立失敗");}

寫資料到檔案:

//寫檔案-(void)writeFile{    NSString *documentsPath =[self dirDoc];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];    NSString *content=@"測試寫入內容!";    BOOL res=[content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];    if (res) {        NSLog(@"檔案寫入成功");    }else        NSLog(@"檔案寫入失敗");}

讀檔案資料:

//讀檔案-(void)readFile{    NSString *documentsPath =[self dirDoc];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];//    NSData *data = [NSData dataWithContentsOfFile:testPath];//    NSLog(@"檔案讀取成功: %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);    NSString *content=[NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil];    NSLog(@"檔案讀取成功: %@",content);}

檔案屬性:

//檔案屬性-(void)fileAttriutes{    NSString *documentsPath =[self dirDoc];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    NSFileManager *fileManager = [NSFileManager defaultManager];    NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];    NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil];       NSArray *keys;    id key, value;    keys = [fileAttributes allKeys];    int count = [keys count];    for (int i = 0; i < count; i++)    {        key = [keys objectAtIndex: i];        value = [fileAttributes objectForKey: key];        NSLog (@"Key: %@ for value: %@", key, value);    }}

刪除檔案:

  

//刪除檔案-(void)deleteFile{    NSString *documentsPath =[self dirDoc];    NSString *testDirectory = [documentsPath stringByAppendingPathComponent:@"test"];    NSFileManager *fileManager = [NSFileManager defaultManager];    NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"];       BOOL res=[fileManager removeItemAtPath:testPath error:nil];    if (res) {        NSLog(@"檔案刪除成功");    }else        NSLog(@"檔案刪除失敗");       NSLog(@"檔案是否存在: %@",[fileManager isExecutableFileAtPath:testPath]?@"YES":@"NO");}

/**

* @author 張興業*  http://blog.csdn.net/xyz_lmn*  iOS入門群:83702688

*  android開發進階群:241395671

*  我的新浪微博:@張興業TBOW*  我的郵箱:xy-zhang#163.com(#->@)*/
https://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.