How to read the contents of a text file into an NSString

Imagine we had a file called myfile.txt which is a standard text file. On each line we have a new item we’d like to read so that our app can do something with it. Here’s how we do that:

// get a reference to our file
NSString *myPath = [[NSBundle mainBundle]pathForResource:@"myfile" ofType:@"txt"];

// read the contents into a string
NSString *myFile = [[NSString alloc]initWithContentsOfFile:myPath encoding:NSUTF8StringEncoding error:nil];

// display our file
NSLog("Our file contains this: %@", myFile);

It is likely that instead of a long list of text we’d rather have each line in a separate string.
Thankfully there’s a method for this:

// split our string into an array
NSArray *mySplit = [myFile componentsSeparatedByString:@"\n"];

// display any one of them like this
NSLog(@"Third Position: %@", [mySplit objectAtIndex:2]);

One thought on “How to read the contents of a text file into an NSString

  1. Apple’s preferred way of working is to use URLs rather than paths. The above example would work just as well by using URL methods:

    // get a URL reference (PREFERRED)
    NSURL *myURL = [[NSBundle mainBundle]URLForResource:@"mysites" withExtension:@"txt"];
    // read the file from a URL (PREFERRED)
    NSString *myFileViaURL = [[NSString alloc]initWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:nil];

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.