Renommer le fichier dans le Cacao?
Comment renommer un fichier, de conserver le fichier dans le même répertoire?
J'ai une chaîne de caractères contenant le chemin complet d'un fichier, et une chaîne de caractères contenant un nouveau nom de fichier (et pas de chemin), par exemple:
NSString *old_filepath = @"/Volumes/blah/myfilewithrubbishname.avi";
NSString *new_filename = @"My Correctly Named File.avi";
Je sais à propos de NSFileManager de movePath:toPath:gestionnaire: méthode, mais je ne peut pas séance d'entraînement de la façon de construire le nouveau chemin d'accès du fichier..
Fondamentalement, je suis à la recherche de l'équivalent pour le code Python suivant:
>>> import os
>>> old_filepath = "/Volumes/blah/myfilewithrubbishname.avi"
>>> new_filename = "My Correctly Named File.avi"
>>> dirname = os.path.split(old_filepath)[0]
>>> new_filepath = os.path.join(dirname, new_filename)
>>> print new_filepath
/Volumes/blah/My Correctly Named File.avi
>>> os.rename(old_filepath, new_filepath)
Vous devez vous connecter pour publier un commentaire.
NSFileManager et NSWorkspace à la fois de fichiers des méthodes de manipulation, mais NSFileManager de
- (BOOL)movePath:(NSString *)source toPath:(NSString *)destination handler:(id)handler
est probablement votre meilleur pari. Utilisation NSString du chemin de méthodes de manipulation pour obtenir les noms de fichier et dossier droit. Par exemple,Les deux classes sont expliqués assez bien dans les docs, mais laissez un commentaire s'il ya quelque chose que vous ne comprenez pas.
Il est intéressant de noter que le déplacement d'un fichier sur lui-même allez échouer. J'ai eu une méthode qui a remplacé les espaces par des caractères de soulignement et fait le nom de fichier en minuscules et renommé le fichier vers le nouveau nom. Fichiers avec un seul mot dans le nom, échouera à la renommer le nouveau nom serait identique à la casse du système de fichiers.
La façon dont j'ai résolu ce problème a été de faire en deux étapes renommer d'abord renommer le fichier à un nom temporaire, puis renommer le nom prévu.
Certains pseudo-code expliquant cela:
La solution:
Je voulais juste rendre cela plus facile à comprendre pour un débutant. Voici tout le code:
voici un exemple plus récent pour iOS, le NSFileManager méthode est un peu différente:
Pour le glaçage sur le dessus, une catégorie sur NSFileManager: