首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树遍历BFS

树遍历BFS
EN

Stack Overflow用户
提问于 2013-08-13 19:17:43
回答 1查看 359关注 0票数 1

我在文件夹结构中有一个元素列表:

  • /文件夹/myfile.pdf
  • /文件夹/subfolder1 1/myfile.pdf
  • /文件夹/subfolder2 2/myfile.pdf
  • /文件夹/子文件夹3/另一个/myfile.pdf

我的目标是遍历该结构,以便构建与我的文件名匹配的文件数组,但是数组中第一次出现的项将是最接近文件夹根目录的文件。

有人告诉我宽度第一次穿越,但我现在很困惑。

我开始采用这种方法,但结果不能满足我的需要.如果有任何帮助,我将不胜感激!

代码语言:javascript
复制
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];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-13 19:56:48

下面是一个类似您所描述的东西的工作示例:

代码语言:javascript
复制
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"]];
}];

这里的想法如下:

  1. 枚举感兴趣文件夹中的所有文件。
  2. 对于每个具有所需文件名的文件,将其添加到htmlFiles数组中。该文件作为字典添加,以便我们可以存储深度(调用-[NSDirectoryEnumerator level]的结果)以及每个文件名。
  3. 现在我们有了一个数组,其中包含了我们可能感兴趣的所有文件。
  4. 根据文件的深度(字典中的@"level"键)对数组进行排序。
  5. 我们不再需要字典中的路径名了,所以创建一个只包含路径名的新数组(但顺序与前面相同)。

在这段代码的末尾,paths数组包含所有名为“index.html”的文件的NSURLs,其中最接近根的文件首先是最接近根的文件,最远离根目录的文件是最后的文件。(请注意,在同一目录级别的两个文件数组中的排序是未定义的。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18217351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档