删除与iOS中的模式匹配的文件
有没有办法使用模式删除给定目录中的所有文件(而不是recursion) ?
举例来说,我有一些名为file1.jpg
, file2.jpg
, file3.jpg
等的文件,我想知道是否有像这个UNIX命令一样使用通配符的方法:
rm file*.jpg
尝试这个:
- (void)removeFiles:(NSRegularExpression*)regex inPath:(NSString*)path { NSDirectoryEnumerator *filesEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:path]; NSString *file; NSError *error; while (file = [filesEnumerator nextObject]) { NSUInteger match = [regex numberOfMatchesInString:file options:0 range:NSMakeRange(0, [file length])]; if (match) { [[NSFileManager defaultManager] removeItemAtPath:[path stringByAppendingPathComponent:file] error:&error]; } } }
为你举例
file1.jpg,file2.jpg,file3.jpg
你可以使用如下:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^file.*\.jpg$" options:NSRegularExpressionCaseInsensitive error:nil]; [self removeFiles:regex inPath:NSHomeDirectory()];
Swift版本
func removeFiles(regEx:NSRegularExpression, path:String) { let filesEnumerator = NSFileManager.defaultManager().enumeratorAtPath(path) while var file:String = filesEnumerator?.nextObject() as? String { let match = regEx.numberOfMatchesInString(file, options: nil, range: NSMakeRange(0, file.length)) if match > 0 { NSFileManager.defaultManager().removeItemAtPath(path.stringByAppendingPathComponent(file), error: nil) } } }