2014-01-22 53 views
0

我正尝试读取我的iPhone应用程序资源文件夹中的目录。阅读iOS中的目录结构

NSString *path= [[NSBundle mainBundle] pathForResource:@"Capitalization" ofType:@"html" inDirectory:@"MyDirectory"]; 
NSLog(@"Path : %@",path); 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path]; 
if(fileExists){ 
    NSString* content = [NSString stringWithContentsOfFile:path 
                     encoding:NSUTF8StringEncoding 
                      error:NULL]; 
    NSLog(@"Data from plist %@",content); 
}else { 
    NSLog(@"File Not Found"); 
    //exit(1); // if file not found exit the application. 
} 

但每次我得到NULL。 请帮忙。我的目录也可以包含另一个目录,在这种情况下,我还必须获取目录名称。

+0

你有没有看过NSFileManager的文档? –

+0

你从哪里得到'NULL'?文件是否存在? 'NULL'是否记录了'content'?如果是这样,请使用'error'参数。这就是它的目的。告诉你为什么该方法失败。或者'路径''无'? – rmaddy

+0

顺便说一句 - 在您的项目结构的资源部分,是MyDirectory文件夹是蓝色还是黄色? – rmaddy

回答

0

你将要使用:

NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:somePathString error:nil]; 

这会给你所选目录内的文件夹和文件的列表。如果你想要这个搜索子文件夹,那么你将不得不做一个函数来运行这个代码并递归调用该函数。

在你的代码在呼唤:

NSString *path= [[NSBundle mainBundle] pathForResource:@"Capitalization" ofType:@"html" inDirectory:@"MyDirectory"]; 

即寻找文件夹(BundlePath)/MyDirectory/Capitalization.html什么叫和内部的所有子文件夹。确保你使用的是正确的,那就是你试图搜索的实际路径。如果您的Capitalization.html作为资源添加到捆绑包中,则永远不会找到它,因为捆绑包中的所有内容都位于单个级别中(所有内容都位于捆绑包“文件夹”内)。如果您的Capitalization.html位于名为MyDirectory的文件夹内,该文件夹已通过项目引用添加,那么您正在正确搜索并且它应该可以正常工作。

长话短说。作为资源添加的文件将始终在捆绑软件目录中找到。作为参考添加的文件(和文件夹)将保持其文件夹结构,并且可以正确搜索文件夹。