从objective-c中的文本文件中读取

时间:2012-09-06 08:22:58

标签: objective-c ios cocoa-touch

我有一个由多个单词组成的文本文件。它们都被新线分开。

我尝试了什么:

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

if (filePath) { // This does trigger, so the file is actually found.

    NSArray *arr = [filePath componentsSeparatedByString:@"\n"]; 

}

我也尝试过:

NSMutableArray * lines = [[NSMutableArray alloc] initWithArray:[filePath componentsSeparatedByString:@"\n"] copyItems: YES];

这些似乎都不起作用,因为当我使用NSLog读出行时,我似乎只获得了文件路径。你们有人可以帮忙吗?

lines数组似乎只包含一个对象,即文本文件位置的字符串。

我想要一个数组,其中每个字符串都是由纺织品中的一行分隔的字符串。

4 个答案:

答案 0 :(得分:12)

首先,您需要在应用程序包中获取该文件。这意味着,您必须将其放在应用程序的“资源”文件夹中。

然后你可以这样读:

NSString* path = [[NSBundle mainBundle] pathForResource:@"filename" 
                                                 ofType:@"txt"];

然后将内容加载到NSString更加容易:

NSString* content = [NSString stringWithContentsOfFile:path
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];

然后创建数组:

NSArray *arr = [content componentsSeparatedByString:@"\n"]; //might also be @"\r" check both.

答案 1 :(得分:1)

您所做的一切都是黑客攻击文件路径 - 您尚未从文件中上传任何数据。

有很多方法可以做到。 [NSData initWithContentsOfURL...可能是一个开始

答案 2 :(得分:1)

方法[NSString componentsSeparatedByString:]用于字符串本身,在您的情况下是文件路径,而不是此路径中文件的内容。

有很多方法可以从文件中读取。 Dave DeLong已经针对这个问题发布了一个聪明的方法。检查here

答案 3 :(得分:0)

NSString * stringFileContent = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]     pathForResource:@“yourfilename”ofType:@“txt”] encoding:NSUTF8StringEncoding error:& error];