ios檔案處理(二)

來源:互聯網
上載者:User

通過plist檔案存取檔案

 

在 ios檔案處理(一)的項目中,修改HomeViewController.m的viewDidLoad方法

 

 - (void)viewDidLoad

{/*    NSString *fileName = [[self documentsPath] stringByAppendingPathComponent:@"content.txt"];        //NSString *fileName = [[self tempPath] stringByAppendingPathComponent:@"content.txt"];        [self writeToFile:@"蘋果的魅力!" withFileName:fileName];        NSString *fileContent = [self readFromFile:fileName];        NSLog(fileContent);*/        NSString *fileName = [[self tempPath]                           stringByAppendingPathComponent:@"content.txt"];    [self writeToFile:@"我愛蘋果!" withFileName:fileName];        NSString *fileContent = [self readFromFile:fileName];    

   //操作plist檔案,首先擷取在Documents中的contacts.plist檔案全路徑,並且把它賦值給plistFileName變數。 

    NSString *plistFileName = [[self documentsPath]                                stringByAppendingPathComponent:@"contacts.plist"];        if ([[NSFileManager defaultManager] fileExistsAtPath:plistFileName]) {

        //載入字典中 

        NSDictionary *dict = [[NSDictionary alloc]                               initWithContentsOfFile:plistFileName];        

       //按照類別顯示在偵錯主控台中 

        for (NSString *category in dict) {            NSLog(category);            NSLog(@"********************");                        NSArray *contacts = [dict valueForKey:category];                        for (NSString *contact in contacts) {                NSLog(contact);            }        }        [dict release];    } else {//如果Documents檔案夾中沒有contacts.plist檔案的話,則從專案檔中載入contacts.plist檔案。        NSString *plistPath = [[NSBundle mainBundle]                                pathForResource:@"contacts" ofType:@"plist"];                NSDictionary *dict = [[NSDictionary alloc]                              initWithContentsOfFile:plistPath];        

       //寫入Documents檔案夾中 

        fileName = [[self documentsPath] stringByAppendingPathComponent:@"contacts.plist"];                [dict writeToFile:fileName atomically:YES];                [dict release];    }        [super viewDidLoad];}

 

 

 

P.S:

我們有時會用到綁定資源 (通常將項目中的資源叫綁定資源,他們都是唯讀。如果我們想在應用程式啟動並執行時候對這些資源進行讀寫操作,就需要將它們複製到應用程式檔案夾中,比如Documents和tmp檔案夾)

在 AppDelegate.m中添加一個方法即可

//複製綁定資源

//原理:我們首先擷取應用程式的Documents檔案夾的位置,然後在Documents中搜尋通過該方法參數傳遞進來的檔案名稱,其中包括檔案名稱和副檔名。如果該檔案不存在,則通過NSBundle類直接擷取該綁定資源並將其複製到Documents檔案夾中- (void) copyBundleFileToDocumentsFolder:(NSString *)fileName                           withExtension:(NSString *)ext{    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *documentsDirectory = [paths objectAtIndex:0];    NSString *filePath = [documentsDirectory                           stringByAppendingPathComponent:[NSString stringWithString:fileName]];    filePath = [filePath stringByAppendingString:@"."];    filePath = [filePath stringByAppendingString:ext];    [filePath retain];    NSFileManager *fileManager = [NSFileManager defaultManager];    if (![fileManager fileExistsAtPath:filePath]) {        NSString *pathToFileInBundle = [[NSBundle mainBundle]                                        pathForResource:fileName ofType:ext];        NSError *error = nil;        bool success = [fileManager copyItemAtPath:pathToFileInBundle                                             toPath:filePath                                              error:&error];        if (success) {            NSLog(@"檔案已複製");        } else {            NSLog([error localizedDescription]);        }    }

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.