¿Cómo escribo un archivo en iOS? Estoy tratando de hacerlo con el siguiente código pero estoy haciendo algo mal:
char *saves = "abcd";
NSData *data = [[NSData alloc] initWithBytes:saves length:4];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"];
[data writeToFile:appFile atomically:YES];
He creado MyFile.txt en recursos.
Respuestas:
Su código está funcionando al final, lo acabo de probar. ¿Dónde verifica sus cambios? Utilice la ruta del directorio de documentos. Para obtener el camino -
NSLog(@"%@",documentsDirectory);
y copie la ruta desde la consola y luego abra el buscador y presione Cmd + shift + gy pegue la ruta aquí y luego abra su archivo
fuente
Puede que esto te sea útil.
//Method writes a string to a text file -(void) writeToTextFile{ //get the documents directory: NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; //make a file name to write the data to using the documents directory: NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory]; //create content - four lines of text NSString *content = @"One\nTwo\nThree\nFour\nFive"; //save content to the documents directory [content writeToFile:fileName atomically:NO encoding:NSUTF8StringEncoding error:nil]; } //Method retrieves content from documents directory and //displays it in an alert -(void) displayContent{ //get the documents directory: NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; //make a file name to write the data to using the documents directory: NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt", documentsDirectory]; NSString *content = [[NSString alloc] initWithContentsOfFile:fileName usedEncoding:nil error:nil]; //use simple alert from my library (see previous post for details) [ASFunctions alert:content]; [content release]; }
fuente
Rápido
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] as! String let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" content.writeToFile(fileName, atomically: false, encoding: NSUTF8StringEncoding, error: nil) } func loadFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] as! String let fileName = "\(documentsDirectory)/textFile.txt" let content: String = String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding, error: nil)! println(content) }
Swift 2
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" do{ try content.writeToFile(fileName, atomically: false, encoding: NSUTF8StringEncoding) }catch _ { } } func loadFile()->String { let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content: String do{ content = try String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding) }catch _{ content="" } return content; }
Swift 3
func saveFile() { let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content = "Hello World" do{ try content.write(toFile: fileName, atomically: false, encoding: String.Encoding.utf8) }catch _ { } } func loadFile()->String { let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(documentsDirectory)/textFile.txt" let content: String do{ content = try String(contentsOfFile: fileName, encoding: String.Encoding.utf8) } catch _{ content="" } return content; }
fuente
Intenta hacer
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"];
como
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.txt"];
fuente