2011-04-11 47 views
68

¿Cómo escribo un archivo en iOS? Estoy tratando de hacerlo con el siguiente código pero estoy haciendo algo mal:Escribir un archivo en iOS

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 sobre los recursos.

+4

Por favor, describa exactamente lo que está pasando mal. –

Respuesta

25

Su código está trabajando en mi extremo, acabo de probado. ¿Dónde estás revisando tus cambios? Use la ruta del directorio de Documentos. Para obtener la ruta -

NSLog(@"%@",documentsDirectory); 

y copiar ruta de la consola y luego buscador abierta y pulse Cmd + Shift + G y la ruta de pasta aquí y luego abrir su archivo

+0

Supongo que aquí es donde estoy equivocado. He creado MyFile dentro de mi directorio de aplicaciones de recursos. No hay cambios allí. ¿Dónde debo verificar o crear el archivo? –

+2

He actualizado mi respuesta, mira allí – saadnib

107

Puede ser 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]; 

} 
+1

No puedo encontrar el archivo donde escribo Parece que no existe –

+0

Puede cambiar la ruta del directorio del documento. –

+0

use - #define DOCUMENTS_FOLDER [NSHomeDirectory() stringByAppendingPathComponent: @ "Documents"] –

7

Intente hacer

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile"]; 

como

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"MyFile.txt"]; 
9

Swift

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; 
} 
Cuestiones relacionadas