1

我在 Objective-C 中寻找一种简单的方法来选择目录中的所有 .jpg 文件。现在我只能获取所有目录内容。有没有办法将通配符(如 *.jpg)应用于结果?

 if ( [[NSFileManager defaultManager] isReadableFileAtPath:@"/folder2/"] )
             [[NSFileManager defaultManager] copyItemAtPath:@"/folder2/" toPath:@"/folder1/" error:nil];
4

2 回答 2

3

你可以使用类似的东西:

NSArray *list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/folder2/" error:nil];
for (NSString* file in list) {
    if ([[file pathExtension] isEqualToString: @"jpg"]) {
         [[NSFileManager defaultManager] copyItemAtPath:file toPath:@"/folder1/" error:nil];
    }
}

contentsOfDirectoryAtPath:error方法返回一个数组,其中包含指定目录中文件的名称。对于每个条目,将NSString pathExtension方法的结果与目标字符串(“jpg”)进行比较。任何匹配的文件都将复制到目标目录中。

于 2012-12-20T03:04:59.480 回答
1

几乎直接来自文档

NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir];
NSString *file;
while (file = [dirEnum nextObject]) {
    if ([[file pathExtension] isEqualToString: @"jpg"]) {
        // process the document
        [self doSomethingWithFile: [docsDir stringByAppendingPathComponent:file]];
    }
}

看起来 NSDirectoryEnumerator 也支持快速枚举,所以你可以使用它:

NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir];
for (NSString *file in dirEnum) {
    if ([[file pathExtension] isEqualToString: @"doc"]) {
        // process the document
        [self doSomethingWithFile: [docsDir stringByAppendingPathComponent:file]];
    }
}

使用目录枚举器和遍历返回的列表之间的区别在于-contentsOfDirectoryAtPath:,目录枚举器还将提供来自子目录的结果。

于 2012-12-20T03:07:57.273 回答