IOS拷贝文件到沙盒

- (void)copyFileFromResourceTOSandbox
{
    
    //文件类型
    NSString * docPath = [[NSBundle mainBundle] pathForResource:@"area" ofType:@"db"];
    
    // 沙盒Documents目录
    NSString * appDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    
    // 沙盒Library目录
    //NSString * appDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
    //appLib  Library/Caches目录
    //NSString *appLib = [appDir stringByAppendingString:@"/Caches"];
    
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *filePath = [appDir stringByAppendingPathComponent:@"area.db"];
    if(![fileManager fileExistsAtPath:filePath]) //如果不存在
    {
        BOOL filesPresent = [self copyMissingFile:docPath toPath:appDir];
        if (filesPresent) {
            NSLog(@"Copy Success");
        }
        else
        {
            NSLog(@"Copy Fail");
        }
    }
    else
    {
        NSLog(@"文件已存在");
    }
}

/**
 *    @brief    把Resource文件夹下的area.db拷贝到沙盒
 *
 *    @param     sourcePath     Resource文件路径
 *    @param     toPath     把文件拷贝到XXX文件夹
 *
 *    @return    BOOL
 */
- (BOOL)copyMissingFile:(NSString *)sourcePath toPath:(NSString *)toPath
{
    BOOL retVal = YES; // If the file already exists, we'll return success…
    NSString * finalLocation = [toPath stringByAppendingPathComponent:[sourcePath lastPathComponent]];
    if (![[NSFileManager defaultManager] fileExistsAtPath:finalLocation])
    {
        retVal = [[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:finalLocation error:NULL];
    }
    return retVal;
}

 

posted @ 2014-04-23 17:13  菜鸟程序猿  阅读(1682)  评论(0编辑  收藏  举报