2010-08-25 4 views
2

J'utilise le code suivant pour écrire dans un fichier.Le texte dans le fichier ne doit pas être écrasé

fileName = [[NSBundle mainBundle] pathForResource: @"user" ofType: @"txt"]; 
NSFileHandle *myHandle = [NSFileHandle fileHandleForUpdatingAtPath:fileName]; 
[myHandle seekToEndOfFile]; 

NSData *dataName = [uname dataUsingEncoding: NSUnicodeStringEncoding]; 

if ([dataName writeToFile:fileName atomically:YES]) 
    NSLog(@"writeok"); 

[myHandle seekToEndOfFile]; 

Il écrase le fichier. Supposons que le fichier contienne déjà la chaîne "box". Maintenant, quand j'écris un nouveau mot, "Bonjour", alors le fichier contient seulement "Bonjour", pas "boîte".

Quel est le problème avec le code?

+0

Vous devez utiliser la méthode de données - (void) writeData: (NSData *) du NSFileHandle. i.e: [myHandle writeData: nom_données]; – RichB

Répondre

2

Vous ne pouvez pas écrire dans les fichiers de l'ensemble. Comme le code est signé, toute tentative de modification des fichiers dans l'ensemble romprait la signature. Vous devez déplacer le fichier vers le répertoire Documents et y travailler dessus.

+0

Riche, oui je ne l'écris pas en bundle. Le problème est que je veux ajouter une nouvelle ligne dans le fichier. Mais il remplace le fichier. Alors, hw à ajouter dans la nouvelle ligne d'un fichier? – user426795

+0

est NSFileHandle est utile? – user426795

+1

(Le code ci-dessus écrit dans un fichier de l'ensemble). La méthode writeToFile: atomically: encoding: error: ci-dessus écrase le fichier s'il existe. Vous pouvez d'abord lire le contenu du fichier, ajouter à cette chaîne ce que vous voulez et l'écrire comme ci-dessus ou comme vous le dites, utilisez NSFileHandle. – RichB

Questions connexes