這可能是一個非常容易解決的問題,但我沒有成功。我已經將文件「questions_famquiz_easy_110326.txt」複製到資源文件夾中,並且現在想要訪問(讀取)它和NSLog以查看我能夠讀取它。Objective-C /無法在「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
下面是其中i已放置在文件:
問題迎刃而解:
NSString *myString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
當我使用上面的代碼時,它不起作用,當我用下面的代碼工作並打印出文本時。
NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath];
嘗試在你內部插入一個'NSLog()'if-case('if(![fileManager fileExistsAtPath:filePath])')並告訴它是否被執行。 – cweinberger 2011-04-24 20:14:25
我沒有放過NSLog,但沒有命中。 – PeterK 2011-04-24 20:23:30
您是否重新檢查filePath處的文件?我想在第一次運行它沒有找到,所以它創建了空文件。請輸出filePath至控制檯 – cweinberger 2011-04-24 20:29:27