78 votes

Écrire un fichier sur iOS

Comment puis-je écrire un fichier sur iOS? Je suis en train de le faire avec le code suivant, mais je suis en train de faire quelque chose de 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];

J'ai créé MyFile.txt sur les ressources.

108voto

Chetan Bhalara Points 6936

Peut-être que c'est utile pour vous.

//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:NSStringEncodingConversionAllowLossy 
                                      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];

}

26voto

saadnib Points 9152

Votre code est de travailler à ma fin, j'ai juste testé. Où en êtes-vous de vérifier vos modifications? L'utilisation des Documents de chemin d'accès au répertoire. Pour obtenir le chemin d'accès

NSLog(@"%@",documentsDirectory);

et le chemin de la copie de la console, puis ouvrez le finder et appuyez sur Cmd+maj+g et coller le chemin d'accès ici et ouvrez votre fichier

7voto

7KV7 Points 19750

Essayez de faire

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

comme

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

-1voto

casillas Points 815
-(void) writeToTextFile:(int) value{
    //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";

    NSString *content2 = [NSString stringWithFormat:@"%d",value];
    content = [content2 stringByAppendingString:@"\n"];
    //save content to the documents directory
    [content writeToFile:fileName
              atomically:NO
                encoding:NSStringEncodingConversionAllowLossy
                   error:nil];

}


-(void)writeATEndOfFile:(NSString *)content2
{
    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];

    if([[NSFileManager defaultManager] fileExistsAtPath:fileName])
    {
        NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:fileName];
        [fileHandle seekToEndOfFile];
        NSString *writedStr = [[NSString alloc]initWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];
        content2 = [content2 stringByAppendingString:@"\n"];
        writedStr = [writedStr stringByAppendingString:content2];

        [writedStr writeToFile:fileName
                    atomically:NO
                      encoding:NSStringEncodingConversionAllowLossy
                         error:nil];
    }
    else {
        int n = [content2 intValue];
        [self writeToTextFile:n];
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X