zoukankan      html  css  js  c++  java
  • ios文件处理(二)

    通过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]);
            }
        }
    }

  • 相关阅读:
    git变慢的原因
    MongoDB存储过程创建和使用一例
    关于小游戏的槛和限制
    【转载】如何查看本机电脑的公网IP
    【转载】C#如何获取DataTable中某列的数据类型
    【转载】C#的DataTable使用NewRow方法创建新表格行
    【转载】如何删除Windows远程桌面保存的账号密码数据
    【转载】 C#中ArrayList使用GetRange方法获取某一段集合数据
    【转载】 C#中常见的泛型集合类有哪些
    【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据
  • 原文地址:https://www.cnblogs.com/hanjun/p/2743746.html
Copyright © 2011-2022 走看看