1

这可能是一个非常容易解决的问题,但我没有成功。我已将文件“questions_famquiz_easy_110326.txt”复制到资源文件夹,现在想要访问(读取)它并 NSLog 以查看我能够读取它。

下面的代码来自我根据在网上找到的示例所做的测试之一。

我正在尝试访问 Resources 文件夹中的 txt 文件,但没有这样做。我已经搜索了一个解决方案,测试了很多,但没有成功。

我正在使用以下代码进行测试:

NSLog(@"\n \n >>>>>>viewDidLoad<<<<<<<<<");

NSError *error;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

if(![fileManager fileExistsAtPath:filePath])
{
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/questions_famquiz_easy_110326.txt"]];
    [data writeToFile:filePath atomically:YES];
}

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
NSLog(@"myString: %@", myString);

NSLog(@"\n \n>>>>>>DONE WITH viewDidLoad<<<<<<<<<");

exit(0);  //====EXIT JUST FOR THE TEST====<<<

上面的代码位于启动的第一个 viewController 中。

我得到的输出是:

>>>>>>viewDidLoad<<<<<<<<<
2011-04-24 21:53:47.825 FamQuiz_R0_1[542:307] myString: (null)
2011-04-24 21:53:51.044 FamQuiz_R0_1[542:307] 
>>>>>>DONE WITH viewDidLoad<<<<<<<<<

有人可以帮我解决这个问题吗?

更新:

这是文件路径:

2011-04-24 22:38:08.562 FamQuiz_R0_1[637:307] filePath: /var/mobile/Applications/7F5FDB03-0D22-46BC-91BC-4D268EB4BBEB/FamQuiz_R0_1.app/questions_famquiz_easy_110326.txt

这是我放置文件的位置: 在此处输入图像描述

问题解决了:

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

当我使用上面它不起作用时,当我使用下面它工作并打印出文本时。

NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath];
4

1 回答 1

1

您没有从资源文件夹中读取。您正在尝试从文档目录中读取。所以取回 nil 是有道理的,因为该文件在那里不存在。

改变:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [docsDirectory stringByAppendingPathComponent:@"questions_famquiz_easy_110326.txt"];

至:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"questions_famquiz_easy_110326" ofType:@"txt"];

它应该适合你。

于 2011-04-24T20:29:09.107 回答