Скопировать подстановочные имена из основного комплекта в документы? - PullRequest
2 голосов
/ 04 декабря 2011

Я могу копировать файлы из моего основного комплекта в каталог «Документы» по имени файла с кодом ниже, но как я могу копировать на основе подстановочного знака? Например, у меня есть несколько файлов с именем myimageX.jpg (x обозначает случайное число). Я хотел бы просмотреть все из них, которые содержатся в моем основном комплекте, и, если их нет в Документах, скопируйте их.

BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];

myfileName = @"myimage322.jpg";
documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
documentsDir = [documentPaths objectAtIndex:0];
filePath = [documentsDir stringByAppendingPathComponent:myfileName];

success = [fileManager fileExistsAtPath:filePath];
if(success) return;
NSString *filePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:myfileName];
[fileManager copyItemAtPath:filePathFromApp toPath:filePath error:nil];

[fileManager release];

1 Ответ

3 голосов
/ 04 декабря 2011

Метод fileExistsAtPath был бы полезен. Сначала перечислите содержимое пакета и проверьте, существует ли один и тот же файл (с тем же именем файла) в Документах.

Вот как это сделать:

NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *bundleDir = [[NSBundle mainBundle] resourcePath];

NSFileManager *localFileManager=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:bundleDir];

NSString *file;

while (file = [dirEnum nextObject]) {

    if (![[NSFileManager defaultManager] fileExistsAtPath: [docsDir stringByAppendingPathComponent:file]]) {

        [[NSFileManager defaultManager] copyItemAtPath:[bundleDir stringByAppendingPathComponent:file] 
                                                toPath:[docsDir stringByAppendingPathComponent:file] error:nil];         
    }

}

[localFileManager release];

Это модифицированная версия кода из ссылки на класс NSFileManager, которую можно найти здесь: http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...