RENAME |
Renommer |
---|---|
Langage C | stdio.h |
Syntaxe
int rename(const char *anciennom,const char *nouveaunom); |
Paramètres
Nom | Description |
---|---|
anciennom | Ce paramètre permet d'indiquer l'ancien nom du fichier |
nouveaunom | Ce paramètre permet d'indiquer le nouveau nom du fichier |
Description
Cette fonction permet de renommer un fichier.
Algorithme
MODULE RENAME(anciennom,nouveaunom) SI anciennom est NULL ou nouveaunom est NULL ALORS * Erreur : paramètres invalides RETOURNE ERROR_INVALID_ARGUMENT FIN SI * Vérifier si le fichier ou répertoire source existe SI pas file_exists(anciennom) ALORS * Erreur : fichier ou répertoire source introuvable RETOURNE ERROR_FILE_NOT_FOUND FIN SI * Vérifier si la cible existe déjà SI file_exists(nouveaunom) ALORS * Erreur : la cible existe déjà RETOURNE ERROR_TARGET_ALREADY_EXISTS FIN SI * Tenter de renommer ou déplacer success ← system_rename_file_or_directory(anciennom, nouveaunom) SI success ALORS * Succès RETOURNE 0 SINON * Erreur : échec de l'opération RETOURNE ERROR_RENAME_FAILED FIN SI |
Remarques
- Retour et gestion des erreurs : rename retourne 0 en cas de succès, et une valeur non nulle sinon. En cas d'échec, la variable globale errno est définie pour indiquer la cause de l'erreur, comme :
- Portabilité : La fonction rename est conforme à la norme ISO C, ce qui la rend portable entre les systèmes d'exploitation compatibles C. Cependant, certains comportements spécifiques, comme le déplacement entre systèmes de fichiers différents, peuvent varier selon les plateformes.
- Remplacement conditionnel : Si un fichier ou un répertoire avec le même nom que nouveaunom existe déjà, le comportement de rename dépend du système d'exploitation. Sous Unix/Linux, la cible est remplacée uniquement si elle est un fichier ordinaire. Sous Windows, cela entraîne une erreur, à moins de supprimer manuellement la cible avant d'appeler rename.
- Restrictions sur les répertoires : Pour renommer un répertoire, les systèmes d'exploitation imposent souvent des restrictions. Par exemple, un répertoire ne peut pas être renommé s'il est en cours d'utilisation par un processus. De plus, les sous-répertoires et les fichiers contenus ne sont pas affectés par l'opération.
- Utilisation courante : rename est souvent utilisée pour des opérations de sauvegarde ou des mises à jour atomiques. Par exemple, on peut écrire des données dans un fichier temporaire, puis utiliser rename pour remplacer le fichier original. Cela garantit que les opérations sont complètes et non corrompues en cas d'interruption.
- Impact sur les systèmes de fichiers : La fonction rename est généralement rapide et efficace, car elle modifie uniquement les métadonnées du système de fichiers. Cependant, si le fichier ou le répertoire est déplacé entre différents systèmes de fichiers, certains systèmes d'exploitation copient tout le contenu avant de supprimer l'ancien fichier, ce qui peut ralentir l'opération.
- Gestion des permissions : Pour que rename fonctionne, l'utilisateur doit avoir des permissions suffisantes sur le fichier ou répertoire source et sur le répertoire cible. En particulier, des permissions d'écriture sont nécessaires dans le répertoire contenant le fichier source et dans le répertoire contenant le fichier cible (si différent).
Constante | Description |
---|---|
ENOENT | Cette constante permet d'indiquer que le fichier ou répertoire source n'existe pas. |
EACCES | Cette constante permet d'indiquer que l'utilisateur n'a pas les permissions nécessaires. |
EEXIST | Cette constante permet d'indiquer que le fichier ou le répertoire cible existe déjà. |
Voir également
Langage de programmation - C - Référence de procédures et fonctions - remove
Langage de programmation - C++ - Référence de procédures et fonctions - rename
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 210.
Dernière mise à jour : Mardi, le 28 juillet 2015