我在Objective-C中寻找一种简单的方法来选择目录中的所有.jpg文件。现在我只能获得所有目录内容。有没有办法在结果中应用通配符,比如* .jpg?
if ( [[NSFileManager defaultManager] isReadableFileAtPath:@"/folder2/"] )
[[NSFileManager defaultManager] copyItemAtPath:@"/folder2/" toPath:@"/folder1/" error:nil];
答案 0 :(得分: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”)进行比较。任何匹配的文件都将复制到目标目录中。
答案 1 :(得分:1)
非常直接来自the docs:
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:
返回的列表之间的区别在于目录枚举器还将提供子目录的结果。