无法将目录从Bundle复制到库

时间:2014-02-06 11:24:33

标签: iphone ios7 directory copy nsbundle

我在这里有点沮丧的问题,问题是我想将一个目录从Bundle复制到我的应用程序中的Library路径,但代码不能这样做。目录树显示在此处:

enter image description here

在复制目录之前,我想检查bundle中的目录内容,但是数组返回0项。我使用的代码是:

NSString * templatesBundlePath = [[NSBundle mainBundle] pathForResource:@"Templates" ofType:nil];
NSArray * packFolders = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:[NSURL fileURLWithPath:templatesBundlePath] includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLIsDirectoryKey, nil] options:0 error:&error];

packfolders包含0项。

如果包含不是0,我尝试使用以下代码复制它:

NSString * templatesAppPath = NSApplicationSupportDirectoryPath(@"Templates");
[[NSFileManager defaultManager] copyItemAtPath:templatesBundlePath toPath:templatesAppPath error:&error];

当我尝试使用此代码检查捆绑目录大小时

NSFileManager *fm = [[NSFileManager alloc] init];

resultSize = [[[fm attributesOfItemAtPath:[[NSURL fileURLWithPath:templatesBundlePath]  path] error:nil] objectForKey:NSFileSize] unsignedIntegerValue];

NSLog(@"Size: %lu", (unsigned long)resultSize);

该值仅显示68,但查找器中的实际大小为200MB

有人像我一样有问题吗?有人能帮助我吗?

谢谢

3 个答案:

答案 0 :(得分:1)

项目文件夹是黄色的,这意味着它们是组而不是文件夹。在将资源与应用程序捆绑在一起时,将删除目录结构,并且所有文件都放在捆绑包的根目录中。

只需从项目中删除所有组并将文件夹拖回到项目中,现在选择创建文件夹而不是组。

enter image description here

答案 1 :(得分:0)

请尝试使用black.jpg图片路径:

NSString * strpath = [NSString stringWithFormat:@“%@”,[[NSBundle mainBundle] pathForResource:@“Templates”ofType:@“”]];     strpath = [strpath stringByAppendingString:@“/”];     strpath = [strpath stringByAppendingString:@“80s”];         strpath = [strpath stringByAppendingString:@“/”];         strpath = [strpath stringByAppendingString:@“80s_a-team”];         strpath = [strpath stringByAppendingString:@“/”];         strpath = [strpath stringByAppendingString:@“black”];     strpath = [strpath stringByAppendingString:@“。jpg”];

答案 2 :(得分:0)

尝试以下代码

  NSArray *libraryPath=NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
        NSString *directoryPath = [libraryPath objectAtIndex:0];
         NSString *imagePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Templete"];

                // Copy the image Folder from the package to the users filesystem
                [fileManager copyItemAtPath:imagePathFromApp toPath:directoryPath error:nil];