使用glob获取目录中的文件列表

出于某种疯狂的原因,我无法找到一种方法来获取给定目录的文件列表。


我目前在以下方面陷入困境:


NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];

NSArray *dirContents = [[NSFileManager defaultManager] 

                        directoryContentsAtPath:bundleRoot];

..然后去掉我不想要的东西,这很烂。但是我真正想要的是能够搜索“ foo * .jpg”之类的内容,而不是查询整个目录,但是我却找不到类似的东西。


那你怎么做到的呢?


尚方宝剑之说
浏览 725回答 3
3回答

小唯快跑啊

您可以借助NSPredicate轻松实现此目标,如下所示:NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];NSFileManager *fm = [NSFileManager defaultManager];NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"];NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];如果您需要使用NSURL代替,它看起来像这样:NSURL *bundleRoot = [[NSBundle mainBundle] bundleURL];NSArray * dirContents =       [fm contentsOfDirectoryAtURL:bundleRoot        includingPropertiesForKeys:@[]                            options:NSDirectoryEnumerationSkipsHiddenFiles                             error:nil];NSPredicate * fltr = [NSPredicate predicateWithFormat:@"pathExtension='jpg'"];NSArray * onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];

慕工程0101907

这非常适合IOS,但也应该适用cocoa。NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];NSFileManager *manager = [NSFileManager defaultManager];NSDirectoryEnumerator *direnum = [manager enumeratorAtPath:bundleRoot];NSString *filename;while ((filename = [direnum nextObject] )) {    //change the suffix to what you are looking for    if ([filename hasSuffix:@".data"]) {           // Do work here        NSLog(@"Files in resource folder: %@", filename);                }       }

慕侠2389804

如何使用NSString的hasSuffix和hasPrefix方法?类似于(如果您要搜索“ foo * .jpg”):NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];NSArray *dirContents = [[NSFileManager defaultManager] directoryContentsAtPath:bundleRoot];for (NSString *tString in dirContents) {    if ([tString hasPrefix:@"foo"] && [tString hasSuffix:@".jpg"]) {        // do stuff    }}对于像这样的简单,直接的匹配,它比使用正则表达式库更简单。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS