在 Cocoa 中搜索目录及其子目录中的所有目录/文件

Posted

技术标签:

【中文标题】在 Cocoa 中搜索目录及其子目录中的所有目录/文件【英文标题】:Search For All Directory/Files within Directory and its child Directory in Cocoa 【发布时间】:2014-04-29 15:07:58 【问题描述】:

我需要在当前目录及其子目录中找出名称以搜索字符串作为前缀的所有文件和文件夹。就像finder完成搜索一样。 我试过使用 NSFileManager 但它只为当前目录获得结果。 使用 NSTask 我可以在当前目录和子目录中获取文件/文件夹。但问题是我无法在一次搜索中获取文件和文件夹。我只能搜索文件或文件夹,不能同时搜索两者。

另外,如果我使用 NStask,我将无法在某个时间间隔内获得输出。它在 NStask 完成时返回我的结果。我已经尝试使用通知NSFileHandleDataAvailableNotification,但它会在任务完成时返回给我数据。

有没有其他方法,以便我可以搜索目录和文件。另一个应用程序路径查找器已经完成了这项工作。如果有人对此有想法。请帮我 谢谢

【问题讨论】:

【参考方案1】:

有很多方法可以做到这一点。您说您找到了一种方法(没有详细信息)来查找“当前目录”中的项目 - 大概是您提供的目录。因此,一个明显的解决方案肯定是使用它,并且对于它返回的每个项目,哪个也是递归扫描该目录的目录?

如果您想一次性获得所有项目,您可以使用subpathsOfDirectoryAtPath:error:,您可以使用enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: 返回的枚举器一次获取它们,以及其他方式。再次通读NSFileManager 文档。

HTH

【讨论】:

是的,递归是一种选择。但是在递归的情况下,如果我在根目录中搜索文件,扫描根目录并返回具有搜索关键字的文件将花费太多时间。 如果您担心速度,可以查看元数据搜索 - Spotlight 的工作原理。见File Metadata Programming Guide

以上是关于在 Cocoa 中搜索目录及其子目录中的所有目录/文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux 怎么搜索关键字

Mac - 列出目录及其子目录中的所有图像路径(名称)

在 Cocoa/Cocoa Touch 中监控目录

如何在 Linux 上的 C 中查找目录及其子目录中的文件?

如何在使用查找时列出没有绝对路径的目录中的所有文件及其文件大小

如何在目录中的所有文件中搜索文本?