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

object-c 获得目录(包括子目录)下所有文件和文件夹路径的更多相关文章

  1. Java版本的在指定目录及子目录下创建指定的文件

    和删除指定目录及子目录下名叫“xxx.txt”的所有文件一样,也是使用递归的方式实现的. 代码如下: public class Example826003 { private static FileO ...

  2. Python——用os模块寻找指定目录(包括子目录)下所有图片文件

    import os # 导入os模块 def search_file(start_dir): img_list = [] extend_name = ['.jpg', '.png', '.gif'] ...

  3. Linux复制指定目录及子目录下特定类型的文件

    首先建立一个用于测试的目录,用'tree'命令查看其结构如下所示: 可见,目录中主要包含用于测试的*.txt文件和用于充当炮灰的*.tes文件 目标是保持当前的目录结构,只把txt文件复制出来 方法一 ...

  4. 删除一个目录及其子目录下的所有.svn文件

    今天建立svn,加入代码,发现这些个文件夹中竟然已经有.svn文件夹,也就是它以前使用过svn, 这下就有点麻烦,在全新的svn里,这些.svn需要删除,又不可能一个一个手工去删除 网上翻了一下,发现 ...

  5. Java版本的删除指定目录及子目录下名叫“xxx.txt”的所有文件

    以前写过一个python版本的,但是在查找文件路径的时候出现错误,无法正确的获取到文件的路径,就造成无法删除该路径下的“xxx.txt”文件. 当时以为是windows版本系统的错误造成这个问题的,也 ...

  6. php读取目录及子目录下所有文件名的方法

    本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考.具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下: $dir= ...

  7. python递归列出目录及其子目录下所有文件

    python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...

  8. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  9. 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到F盘下任意目录

    package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  10. python查找目录及子目录下特定文件

    写这篇博客的缘由: 面试归来翻脉脉发现一个陌生的朋友提出一个面试题,设计实现遍历目录及子目录,抓取.pyc文件. 并贴出两种实现方法: 个人感觉,这两种方法中规中矩,不像是python的风格.pyth ...

随机推荐

  1. [Node.js]29. Level 6: Socket.io: Setting up Socket.io server-side & Client socket.io setup

    Below we've already created an express server, but we want to start building a real-time Q&A mod ...

  2. Drupal 通过API动态的加入样式文件

    前面几篇文章中讲到关于样式的载入方式.已经了解到能够通过 theme.info 载入样式文件,但都须要更新缓存才干够使用.因些这样子没有办法动态的载入一些样式文件,在DP中提供了两个API操作样式文件 ...

  3. Discuz常见小问题-如何修改导航栏

    1 比如我要修改第一个导航栏,则在界面-导航设置,主导航,然后点击右边的编辑按钮 2 比如我把"首页"的名字改成"论坛首页",别的都不改,然后点击提交,刷新页面 ...

  4. Web Service 的工作原理(转载)

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  5. 使用sigc++插槽系统

    http://www.cppblog.com/gaimor/archive/2010/02/22/108236.html?opt=admin 我所知的c++插槽系统由3个boost的,sigslot的 ...

  6. Java实现根据输入的日期以及天数,获取此日期之后的天数的工作日

    public static void main(String[] args) { List<String> list = new ArrayList<String>();//节 ...

  7. Node使用淘宝 NPM 镜像

    npm install -g cnpm --registry=https://registry.npm.taobao.org之后可以通过cnpm来安装node模块cnpm install [name]

  8. 算法笔记_177:历届试题 城市建设(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有 ...

  9. position sticky 定位

    1.兼容性 https://caniuse.com/#search=sticky chrome.ios和firefox兼容性良好. 2.使用场景 sticky:粘性.粘性布局. 在屏幕范围内时,元素不 ...

  10. 在Ubuntu下设置默认编辑器

    在默认情况下,Ubuntu 系统会为用户预设程序.就拿文本编辑器来说吧,Ubuntu 预设的是 Nano,对某些朋友来说,使用 Vim 可能更得心应手些.那么如何更改这些预设的程序呢? 你可以使用 s ...