我正在尝试读取我的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。 请帮忙。我的目录也可以包含另一个目录,在这种情况下我也必须获取目录名称。
答案 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目录中找到。作为参考添加的文件(和文件夹)将保持其文件夹结构,您可以正确搜索文件夹。