我在文件夹结构中有一个元素列表:
我的目标是遍历该结构,以便构建与我的文件名匹配的文件数组,但是数组中第一次出现的项将是最接近文件夹根目录的文件。
有人告诉我宽度第一次穿越,但我现在很困惑。
我开始采用这种方法,但结果不能满足我的需要.如果有任何帮助,我将不胜感激!
NSMutableArray * directories = [NSMutableArray new];
NSDirectoryEnumerator *enumerator = [[[NSFileManager defaultManager] enumeratorAtPath:url] retain] ;
if( [[filePath lastPathComponent] isEqualToString:@"myfile.pdf"] ){
[directories addObject:[url stringByAppendingString:filePath]];
}
if(directories)
sourceUrl_ = [[NSURL fileURLWithPath:[directoriesToWalk objectAtIndex:0] ] retain];发布于 2013-08-13 19:56:48
下面是一个类似您所描述的东西的工作示例:
NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager]
enumeratorAtPath:@"/Users/bdesham/Sites"];
NSMutableArray *htmlFiles = [NSMutableArray new];
NSURL *path;
while (path = [enumerator nextObject]) {
if ([[path lastPathComponent] isEqualToString:@"index.html"]) {
[htmlFiles addObject:@{ @"level" : [NSNumber numberWithInteger:[enumerator level]],
@"path" : path }];
}
}
[htmlFiles sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1[@"level"] integerValue] > [obj2[@"level"] integerValue];
}];
NSMutableArray *paths = [NSMutableArray arrayWithCapacity:[htmlFiles count]];
[htmlFiles enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[paths addObject:obj[@"path"]];
}];这里的想法如下:
htmlFiles数组中。该文件作为字典添加,以便我们可以存储深度(调用-[NSDirectoryEnumerator level]的结果)以及每个文件名。@"level"键)对数组进行排序。在这段代码的末尾,paths数组包含所有名为“index.html”的文件的NSURLs,其中最接近根的文件首先是最接近根的文件,最远离根目录的文件是最后的文件。(请注意,在同一目录级别的两个文件数组中的排序是未定义的。)
https://stackoverflow.com/questions/18217351
复制相似问题