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。
参考[2]: http://stackoverflow.com/questions/11262893/nsurl-to-nsstring