Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Read Text file Programmatically using Objective-C

Tags:

file

text

iphone

I am new to iPhone Programming

I want to read the content of text file which is in my Resourse folder. i did a lot of googling but failed to get proper way for doing this task.

Please suggest

like image 802
Rupesh Avatar asked Sep 29 '09 12:09

Rupesh


2 Answers

The files in your "Resource folder" are actually the contents of your application bundle. So first you need to get the path of the file within your application bundle.

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

Then loading the content into a NSString is even easier.

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

As a bonus you can have different localized versions of filename.txt and this code will fetch the file of the currently selected language correctly.

like image 97
PeyloW Avatar answered Nov 16 '22 11:11

PeyloW


The first thing you want to do is get the path for the text file you want to read. Since it's in your Resources folder, I'm assuming you're copying it into the main bundle of the application. You can get the path for a file in your main bundle using NSBundle's pathForResource:ofType:

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

Then you can read the file at that path into an NSString directly using initWithContentsOfFile:usedEncoding:error:

NSStringEncoding encoding;
NSError *error;
NSString *fileContents = [[[NSString alloc] initWithContentsOfFile:filePath
                                                      usedEncoding:&encoding
                                                             error:&error]
                          autorelease];
like image 42
Tim Avatar answered Nov 16 '22 11:11

Tim