亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用glob獲取目錄中的文件列表

使用glob獲取目錄中的文件列表

iOS
尚方寶劍之說 2019-10-05 13:19:27
出于某種瘋狂的原因,我無法找到一種方法來獲取給定目錄的文件列表。我目前在以下方面陷入困境:NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];NSArray *dirContents = [[NSFileManager defaultManager]                         directoryContentsAtPath:bundleRoot];..然后去掉我不想要的東西,這很爛。但是我真正想要的是能夠搜索“ foo * .jpg”之類的內容,而不是查詢整個目錄,但是我卻找不到類似的東西。那你怎么做到的呢?
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您可以借助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];


查看完整回答
反對 回復 2019-10-05
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

這非常適合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);            

    }       

}


查看完整回答
反對 回復 2019-10-05
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

如何使用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


    }

}

對于像這樣的簡單,直接的匹配,它比使用正則表達式庫更簡單。


查看完整回答
反對 回復 2019-10-05
  • 3 回答
  • 0 關注
  • 773 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號