在iOS中读取目录结构

时间:2014-01-22 17:14:53

标签: ios iphone

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

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。 请帮忙。我的目录也可以包含另一个目录,在这种情况下我也必须获取目录名称。

1 个答案:

答案 0 :(得分:0)

您将要使用:

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

这将为您提供所选目录中的文件夹和文件列表。如果你想要这个搜索子文件夹,那么你将不得不创建一个运行这段代码的函数,并递归调用该函数。

在你的代码中你打电话:

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

即在文件夹Capitalization.html中查找名为(BundlePath)/MyDirectory/的内容以及其中的所有子文件夹。确保您正确使用它,这是您尝试搜索的实际路径。如果您的Capitalization.html被添加为捆绑包中的资源,那么它将永远不会被找到,因为捆绑包中的所有内容都在一个层次中(所有内容都存在于捆绑“文件夹”中)。如果您的Capitalization.html位于名为MyDirectory的文件夹中,该文件夹已通过引用添加到项目中,那么您正在正确搜索并且它应该可以正常工作。

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