object-c 获得目录(包括子目录)下所有文件和文件夹路径

void getAllPathNameInDirectory(vector<string>&filePathList,vector<string>&directoryPathList){

    NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];

    NSURL *directoryURL = [NSURL URLWithString:@"toolKitRes/model"];   // URL pointing to the directory you want to browse

    NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey];

    

    NSDirectoryEnumerator *enumerator = [fileManager

                                         enumeratorAtURL:directoryURL

                                         includingPropertiesForKeys:keys

                                         options:0

                                         errorHandler:^(NSURL *url, NSError *error) {

                                             // Handle the error.

                                             // Return YES if the enumeration should continue after the error.

                                             return YES;

                                         }];

    vector<string> fullPathList;

    for (NSURL *url in enumerator) {

        NSError *error;

        NSNumber *isDirectory = nil;

        if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) {

            // handle error

            

        }

        else if (! [isDirectory boolValue]) {

            // No error and it’s not a directory; do something with the file

            NSString *str_NS=[[url absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

            NSLog(@"%@",str_NS);

            

            string fullPath=[str_NS cStringUsingEncoding:NSASCIIStringEncoding];

            filePathList.push_back(fullPath);

        }else if([isDirectory boolValue]){

            NSString *str_NS=[[url absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

           NSLog(@"%@",str_NS);

            

            string fullPath=[str_NS cStringUsingEncoding:NSASCIIStringEncoding];

            directoryPathList.push_back(fullPath);

        

        }

    }

}

注意:要用

NSString *str_NS=[[url absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; (见参考[2])

不能像 参考[1] 中那样写成

NSString *str_NS=[url absoluteString];

否则如果路径中带有空格,则会变成%20。

 

参考[1]: http://stackoverflow.com/questions/5749488/iterating-through-files-in-a-folder-with-nested-folders-cocoa

参考[2]: http://stackoverflow.com/questions/11262893/nsurl-to-nsstring

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值