包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:

Posted

技术标签:

【中文标题】包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:【英文标题】:Packages and NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: 【发布时间】:2015-05-23 23:23:11 【问题描述】:

我正要将此作为问题发布,但我在表述问题时解决了它。假设您正在使用如下 sn-p 中的代码...

  NSFileManager *fm = [NSFileManager defaultManager];
  NSDirectoryEnumerator *enm;

  enm = [fm enumeratorAtURL:path
            includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, NSURLIsDirectoryKey, NSURLIsPackageKey, nil]
            options:(NSDirectoryEnumerationSkipsSubdirectoryDescendants|NSDirectoryEnumerationSkipsPackageDescendants|NSDirectoryEnumerationSkipsHiddenFiles)
            errorHandler:^BOOL(NSURL *url, NSError *error)
                 // TODO: Error needed here?
                 return YES;
               
         ];

你如何进入文件夹而不是包

【问题讨论】:

【参考方案1】:

你需要像这样跟进它:

      for (NSURL *url in enm)
        NSNumber *number;
        NSString *name;

        // Retrieve the directory property
        [url getResourceValue:&number forKey:NSURLIsDirectoryKey error:nil];

        // Retrieve the name
        [url getResourceValue:&name forKey:NSURLNameKey error:nil];

        if ([number boolValue] == NO)
          // It's a file!
         else 
         // It's a folder!

         // Retrieve the package property. 
         [url getResourceValue:&number forKey:NSURLIsPackageKey error:nil];

          if (![number boolValue])
            // But not a package!
          
        
      

要使上述代码正常工作,您必须确保将 NSURLNameKey、NSURLIsDirectoryKey 和 NSURLIsPackageKey 传递给 includePropertiesForKeys 参数。

【讨论】:

以上是关于包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:的主要内容,如果未能解决你的问题,请参考以下文章

NSFileManager.contentsOfDirectoryAtURL 返回的文件根据 NSFileManager.fileExistsAtPath 不存在?

NSFileManager 多实例写入原子性

NSFilemanager 的使用

NSFileManager

NSFileManager的应用

教程 使用 NSFileManager 存储数据?