删除名称中包含子字符串的多个文件

时间:2012-05-26 19:42:26

标签: iphone objective-c ios nsfilemanager

我想删除包含子字符串的多个文件。比方说,我想删除所有具有子串my的文件。假设我的目录包含4个文件: photo.jpg myPhoto.jpg beachMyPhoto.jpg anyPhoto.jpg ,由于搜索期限是my,我有兴趣删除的文件是 myPhoto.jpg beachMyPhoto.jpg (不区分大小写)。

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

在我提出的解决方案中我不喜欢的是它不是那么有效,特别是如果目录包含太多文件且命中数量很少。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

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

如果您的问题是遍历目录中的所有项目,请测试您的匹配模式,这是不可避免的。您希望使用的任何技术都必须以某种方式迭代目录中的所有项目并测试匹配。唯一的问题是该迭代是否暴露给您。在Cocoa,它是。如果您想要替代它,可以下拉到glob()函数。