0

我想删除多个包含子字符串的文件。例如,我想删除所有具有 substring 的文件my。假设我的目录包含 4 个文件:photo.jpgmyPhoto.jpgbeachMyPhoto.jpganyPhoto.jpg,因为搜索词是my我有兴趣删除的文件是myPhoto.jpgbeachMyPhoto.jpg(不区分大小写) .

我提出的解决方案(我知道该怎么做)是使用NSFileManager类,并使用该函数contentsOfDirectoryAtPath:error:读取所有目录内容,然后通过循环搜索命中。如果找到命中,我删除该文件。

在我提出的解决方案中,我不喜欢的是它效率不高,尤其是在目录包含太多文件并且命中率很小的情况下。有没有更有效的方法来做到这一点?

4

1 回答 1

1

如果您不想将大数组加载到内存中,可以尝试-[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:]. 由于您只需要目录的直接内容,因此您将为-[NSDirectoryEnumerator skipDescendants]它返回的每个目录调用。

如果您关心的是遍历目录中的所有项目,测试您的匹配模式,那是不可避免的。您希望使用的任何技术都必须以某种方式迭代目录中的所有项目并测试匹配。唯一的问题是该迭代是否向您公开。在可可中,它是。如果您想要一个不需要的替代方案,您可以下拉到该glob()功能。

于 2012-05-27T08:59:03.680 回答