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

محم*_*یری 3 sqlite objective-c ios

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

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

#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];
    }

}
Run Code Online (Sandbox Code Playgroud)

Apo*_*ARE 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];
    }
}
Run Code Online (Sandbox Code Playgroud)