使用NSString读取文本文件:stringWithContentsOfFile?
NSString *txtFilePath = [[NSBundle mainBundle] pathForResource:@"\help" ofType:@"txt"];
NSString *txtFileContents = [NSString stringWithContentsOfFile:txtFilePath encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"File: %@",txtFileContents);
结果我得到“null”。我如何知道要指定的路径?
感谢
(我把文件放在“组和文件”下...所以不确定我是否需要指定路径或只是文件名。也许还有其他错误???
答案 0 :(得分:13)
我认为你道路上的反斜杠令人困惑。试试这个:
NSString *txtFilePath = [[NSBundle mainBundle] pathForResource:@"/help" ofType:@"txt"];
另外,如评论中所述,您需要使用项目的构建阶段来复制“help.txt”文件。
答案 1 :(得分:5)
试试这个。您想要的是help.txt
的路径,但您必须将其拆分为其名称和扩展名才能使该方法有效。
NSString *txtFilePath = [[NSBundle mainBundle] pathForResource: @"help" ofType: @"txt"];
为error参数指定NULL
而不是nil
也没什么坏处。这是因为nil
表示对象,而NULL
表示指针。
答案 2 :(得分:2)
这是我在大量项目中包含的常见文件(首先是.h,然后是.m):
我将此命名为FileHelpers.h:
#import <UIKit/UIKit.h>
NSString *pathInDocumentDirectory(NSString *fileName);
我将此命名为(当然)FileHelpers.m:
#include "FileHelpers.h"
NSString *pathInDocumentDirectory(NSString *fileName)
{
// Get list of document directories in sandbox
NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// Get one and only one document directory from that list
NSString *documentDirectory = [documentDirectories objectAtIndex:0];
// Append passed in file name to that directory, return it
return [documentDirectory stringByAppendingPathComponent:fileName];
} // pathInDocumentDirectory
顺便说一句,我不得不承认我自己并没有提出这个解决方案,但是我已经用了很长时间了,我现在已经记不起来了。如果有人知道,请随意申请相应的信用额度!