2010-06-30 11 views
0

J'ai un fichier texte avec des chaînes, je suis en mesure d'accéder au texte du fichier en utilisant la fonction [NSString initWithContentsOfFile] mais ce que je veux faire est de supprimer Tout le texte de ce fichier, mais en laissant le fichier texte en tant que mon application continuera à nourrir des chaînes de message dans le fichier. J'ai regardé par NSString, NSStream, NSScanner, NSFileManager, NSHandle mais n'ai toujours aucune idée de comment le faire.Xcode iPhone: Suppression de texte d'un fichier .txt

Je peux faire une fonction de suppression de fichiers, mais je ne veux pas vraiment le faire parce que mon application serait nécessaire pour boucler des milliers de fois et je pense qu'il est imprudent de supprimer et de créer continuellement un fichier.

Une idée? merci

Répondre

0

Supprimer le contenu d'un fichier est d'écrire à nouveau le fichier entier.

2

Vous ne devez pas supprimer le contenu du fichier. Lorsque vous serez prêt à mettre de nouvelles informations dans le fichier - vous écraserez simplement votre ancien fichier.

NSString *str = @"test string"; 
NSError * error = nil; 
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
if (error) 
    NSLog(@"err %@", [error localizedDescription]); 

Lorsque vous apposent données supplémentaires:

NSFileHandle *myHandle = [NSFileHandle fileHandleForUpdatingAtPath:appFile]; 
[myHandle seekToEndOfFile]; 
[myHandle writeData:data]; 
[myHandle closeFile]; 
+0

Un grand merci, c'est un code simple que j'ai négligé. – user377795

0

Avez-vous pensé à utiliser à la place NSPipe? Il semble que vous essayez d'implémenter une file d'attente de chaînes à traiter. Il y a plusieurs façons de le faire. Je ne suis pas sûr que le thrashing du système de fichiers soit la meilleure approche compte tenu d'autres options comme NSOperationQueue, NSNotificationCenter. Vous pouvez également utiliser NSMutableArray comme une file d'attente en utilisant addObject: pour pousser et supprimerObjectAtIndex: pour faire apparaître des chaînes. Si vous avez besoin de sauvegarder des chaînes non traitées, il est très facile d'enregistrer le tableau dans un fichier dans le cadre de votre suspension/terminer la manipulation et recharger au démarrage

+0

OK, je vais vérifier cela aussi, merci pour votre aide – user377795