使用NSString读取文本文件:stringWithContentsOfFile?

时间:2011-07-13 01:57:32

标签: objective-c cocoa-touch

使用NSString读取文本文件:stringWithContentsOfFile?

NSString *txtFilePath = [[NSBundle mainBundle] pathForResource:@"\help" ofType:@"txt"];
NSString *txtFileContents = [NSString stringWithContentsOfFile:txtFilePath encoding:NSUTF8StringEncoding error:NULL];

NSLog(@"File:  %@",txtFileContents);

结果我得到“null”。我如何知道要指定的路径?

感谢

(我把文件放在“组和文件”下...所以不确定我是否需要指定路径或只是文件名。也许还有其他错误???

3 个答案:

答案 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

顺便说一句,我不得不承认我自己并没有提出这个解决方案,但是我已经用了很长时间了,我现在已经记不起来了。如果有人知道,请随意申请相应的信用额度!