如何检查Document dir中的文件并从NSBundle复制

时间:2013-05-16 09:01:18

标签: ios objective-c nsbundle

我想创建一个从文件目录中读取文件的应用程序但是首先我要检查文件目录,如果不存在文件,则从NSBundle Main自行复制此文件(Db.sqlite)到文档目录并读取它。

我可以从文档目录读取数据或检查文档目录,但我不知道如何将文件从NSBundle复制到文档目录。

请指导我。

1 个答案:

答案 0 :(得分:4)

尝试

    - (void)copyDatabaseIfNeeded
    {    
        BOOL success;

        NSFileManager *fileManager = [NSFileManager defaultManager];
        success = [fileManager fileExistsAtPath:[self getDBPath]];
        if(success)
        {
            return;// If exists, then do nothing.
        }
        //Get DB from bundle & copy it to the doc dirctory.
        NSString *databasePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"DB.sqlite"];
        [fileManager copyItemAtPath:databasePath toPath:[self getDBPath] error:nil];
    }

    //Check DB in doc directory.
    - (NSString *)getDBPath
    {
           NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
           NSString *documentsDir = [paths objectAtIndex:0];
           return [documentsDir stringByAppendingPathComponent:@"DB.sqlite"];
    }

它会将您的数据库复制到doc目录中,然后您可以从doc目录中使用它。