如何将文件从主包复制到文档文件夹

时间:2013-08-30 13:55:53

标签: ios objective-c sqlite

我想检查Document文件夹中的一个文件。我想如果文件夹中不存在此文件,请将其从主文件夹复制到文件夹。我写这个代码和这个文件要复制,但我的问题在这里..... !!!!我的文件是.sqlite文件(数据库文件),当复制到文件夹时自己没有数据!!!!为什么???而当这个文件在主包中时有自己的数据。

这是我的代码,但我不知道为什么不工作!!!!

#define DataName @"mydatabase.sqlite"


- (void)viewDidLoad
{
    [self CopyDatabase];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (NSString*)DatabasePath
{
    NSArray *Paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *DocumentDir = [Paths objectAtIndex:0];
    //NSLog(@"%@",DocumentDir);
    return [DocumentDir stringByAppendingPathComponent:DataName];

}

- (void)CopyDatabase
{
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    success = [fileManager fileExistsAtPath:[self DatabasePath]];
    NSString *FileDB = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:DataName];
    if (success)
    {
        NSLog(@"File Exist");
        return;
    }
    else
    {
        [fileManager copyItemAtPath:FileDB toPath:[self DatabasePath] error:nil];
    }

}

2 个答案:

答案 0 :(得分:5)

我认为您的文档文件夹没有更新,因为该数据库的旧版本存在。您可以使用以下方法清除文档目录,并将其添加到viewDidLoad的顶部:

- (void)viewDidLoad
{
    [self purgeDocumentsDirectory];
    [self CopyDatabase];
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)purgeDocumentsDirectory
{
    NSLog(@"Purging Documents Directory...");
    NSString *folderPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSError *error = nil;
    for (NSString *file in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath error:&error]) {
        [[NSFileManager defaultManager] removeItemAtPath:[folderPath stringByAppendingPathComponent:file] error:&error];
    }
}

答案 1 :(得分:1)

这是我的解决方案

INNER JOIN