¿Cómo leer / escribir files con iOS, tanto en el simulador como en el dispositivo?

Cuando necesito leer un file cuando mi aplicación se inicia y la escribo a veces mientras la uso, intenté llegar a ella con:

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

Y el file, que debería estar en mi carpeta de proyecto, está en su lugar en la carpeta del simulador:

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

Entonces, si quiero leer / escribir usando el simulador y el dispositivo real, ¿qué debo hacer?

Gracias por tus consejos

Para leer el file del package haga lo siguiente

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

Para leerlo desde su almacenamiento de sandbox (documentos)

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

Para escribir en la carpeta de documentos

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

Tenga en count que no podrá escribir el file en la carpeta del package de su aplicación

Esto es lo que necesita para escribir y leer un text de file:

Escribe un file:

 -(void) writeStringToFile:(NSString *)aString{ NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *fileName = @"textFile.txt"; NSString *fileAtPath = [filePath stringByAppendingString:fileName]; if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) { [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil]; } [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO]; } 

y lee un file:

 -(NSString *)readStringFromFile{ NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *fileName = @"textFile.txt"; NSString *fileAtPath = [filePath stringByAppendingString:fileName]; return [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding]; } 

y, finalmente, viewDidLoad mi código en viewDidLoad :

  NSString *text = @"I'm an iOS developer and I'm living at HCM city"; [self writeStringToFile:text]; NSString *strResult = [self readStringFromFile]; NSLog(@"%@", strResult); 

Para los files de escritura, los methods son -[NSData writeToURL:atomically:] y -[NSString writeToURL:atomically:encoding:error:] se puede usar si se vincula al framework Foundation.

Para los files de lectura, los methods son -[NSData initWithContentsOfURL:options:error:] y -[NSString initWithContentsOfURL:encoding:error:] .

 #import "ViewController.h" @interface ViewController () @property (strong, nonatomic) IBOutlet UITextView *txtWriteText; @property (strong, nonatomic) IBOutlet UIButton *btnWriteFile; @property (strong, nonatomic) IBOutlet UIButton *btnReadFile; @property (strong, nonatomic) IBOutlet UILabel *lblReadText; - (IBAction)btnWriteFileTouched:(id)sender; - (IBAction)btnReadFileTouched:(id)sender; @property NSFileManager *filemgr; @property NSString *docsDir; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _filemgr =[NSFileManager defaultManager]; NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); _docsDir = dirPaths[0]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (IBAction)btnWriteFileTouched:(id)sender { NSString *filePath = [_docsDir stringByAppendingPathComponent: @"texfile.txt"]; NSData *databuffer = [@"PREFIX: " dataUsingEncoding: NSASCIIStringEncoding]; [_filemgr createFileAtPath: filePath contents: databuffer attributes:nil]; NSFileHandle *file = [NSFileHandle fileHandleForWritingAtPath: filePath]; if (file == nil){ NSLog(@"Failed to open file"); return; } NSMutableData *data = [NSMutableData dataWithData:[_txtWriteText.text dataUsingEncoding:NSASCIIStringEncoding]]; [file seekToEndOfFile]; [file writeData: data]; [file closeFile]; } - (IBAction)btnReadFileTouched:(id)sender { NSString *filePath = [_docsDir stringByAppendingPathComponent: @"texfile.txt"]; NSData *databuffer; NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath: filePath]; if (file == nil){ NSLog(@"Failed to open file"); return; } databuffer = [file readDataToEndOfFile]; [file closeFile]; NSString *datastring = [[NSString alloc] initWithData: databuffer encoding:NSASCIIStringEncoding]; _lblReadText.text = datastring; } @end