Si le répertoire source et le répertoire cible, Mélipfile effectuerait une copie du fichier source dans le fichier cible, ce qui signifie que je vais finir par voir deux fichiers. p>
Est-ce que la meilleure façon de renommer peut être réalisée? P>
4 Réponses :
À quoi ressemble votre code? J'ai ceci: et il ne laisse pas la source derrière. P> p>
Cela a fonctionné après avoir inclus: #include
Vous voudrez peut-être essayer d'utiliser le mobilefileeex () code > API
sans spécifier le mobilefile_copy_allowed code> pour voir si cela fournit le comportement que vous recherchez. P>
Ne pas spécifier mobilefile_copy_allowed signifie simplement que les mouvements de volume croisé échoueront. Ce n'est pas ce que l'OP veut. Le "simulateur par copie / suppression" fait référence au fait que les mouvements de volume croisé ne peuvent pas être effectués en réécrivant simplement les métadonnées de disque, comme cela est effectué pour les mouvements de même volume.
@David: Je pensais que l'OP demandait une opération de renommée qui ne réussissait que si cela ne pouvait être fait en modifiant uniquement les métadonnées de fichiers au lieu d'une simulation de renommée de copie / Supprimer (je suppose que la question est un peu floue pour moi).
Eh bien, pour être juste, la question est extrêmement médiocre, comme c'est le cas si souvent, on ne peut que deviner que l'intention était. Peut-être que votre interprétation est correcte!
the movefile code> La fonction
est en effet ce que vous voulez. De la documentation: p>
La fonction
MOVELFILE FORT> déplacera (renommer) un fichier ou un répertoire (y compris ses enfants) dans le même répertoire ou dans les répertoires. P> blockQuote> Si les emplacements source et de destination sont à la fois sur le même volume, une opération de renommée atomique est effectuée. S'ils sont sur différents volumes, une opération de copie / suppression est terminée à la place (c'est le meilleur que vous puissiez faire). P>
MoveFileEx code> Par défaut ne se déplace que, il sera pas copier b> sauf si vous ne passe pas
movefile_copy_allowed code> drapeau.
Essayez
#include <stdio.h> int Result = rename( oldname , newname ); if (Result) // "Error occurred." ); else // "File was successfully renamed!";
Que veux-tu dire exactement?
MoveFileEx CODE> avec
MoveFile_Copy_allowed CODE> ne vous donnera pas deux fichiers - il appelle CopyFile puis supprimez-la si les deux fichiers sont sur différents volumes.
Je pense que j'ai vu des cas où MOVELILE () fera copier () + Deletefile (), mais le fichier source est toujours verrouillé par quelqu'un de sorte que son statut sera configuré pour supprimer en attente; Puis quand il est déverrouillé, il disparaît comme par magie. Ou peut-être que je fais cela en haut; Je ne me souviens pas.
Si le programme se bloque ou le courant est perdu, des mouvements non atomiques (AKA Copy-Suppr) peuvent entraîner une incohérence.