Search code examples
objective-ciosnsfilemanagerread-write

How to read/write file with iOS, in simulator as well as on device?


As I need to read a file when my app is launched and write it sometimes while using it, I tried to reach it with :

NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];
NSLog(@"%@",dataFile);

And the file, that should be in my project folder, is instead in the simulator folder :

2012-06-13 17:36:56.398 MyFileApp[610:15203] /Users/Rob/Library/Application Support/iPhone Simulator/5.1/Applications/1FFD4436-DCCA-4280-9E47-F6474BEE0183/MyFileApp.app/myFile.txt

So if I want to read/write it in using the simulator as well as the real device, what should I do ?

Thanks for your advices


Solution

  • To read the file from the bundle do the following

    NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];
    

    To read it from your sandbox storage (documents)

    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/YourFile.txt"];
    NSString *dataFile = [NSString stringWithContentsOfFile:docPath 
                                               usedEncoding:NSUTF8StringEncoding 
                                                      error:NULL];
    

    To write to document folder

    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/YourFile.txt"];
    [dataFile writeToFile:docPath 
              atomically:YES 
                encoding:NSUTF8StringEncoding 
                   error:NULL];
    

    Please note you will not be able to write the file in the bundle folder of your application