2012-05-26 157 views
0

我想刪除包含子字符串的多個文件。舉例來說,我想刪除所有具有子字符串my的文件。假設我的目錄包含4個文件:photo.jpgmyPhoto.jpgbeachMyPhoto.jpganyPhoto.jpg,因爲搜索的詞是my我感興趣刪除文件myPhoto .jpgbeachMyPhoto.jpg(不區分大小寫)。刪除多個包含子字符串名稱的文件

我建議的解決方案(我知道該怎麼做)是使用NSFileManager類,並使用函數contentsOfDirectoryAtPath:error:來讀取所有目錄內容,然後通過循環搜索命中。如果找到命中我刪除該文件。

我建議的解決方案中不喜歡的是,如果目錄中包含的文件過多且命中數很少,則效率不高。有沒有更有效的方法來做到這一點?

+0

你可以使用block方法indexesOfObjectsPassingTest,但我不知道這是否比你自己的循環更快 - 它也必須在內部做一些循環 – rdelmar

+1

可能是這方面的東西:http:// stackoverflow.com/questions/499673/getting-a-list-of-files-in-a-directory-with-a-glob – iTukker

回答

1

如果您不想將大數組加載到內存中,則可以嘗試-[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:]。由於您只需要該目錄的直接內容,因此您將爲其返回的每個目錄調用-[NSDirectoryEnumerator skipDescendants]

如果您關心的是遍歷目錄中的所有項目,測試您的匹配模式,這是不可避免的。你希望使用的任何技術都要以某種方式遍歷目錄中的所有項目並測試匹配。唯一的問題是這個迭代是否暴露給你。在可可,它是。如果你想要一個替代方案,你可以下降到glob()函數。

相關問題