Copie d'un répertoire d'un endroit à un autre

Copie d'un répertoire d'un endroit à un autre

Problème

Vous souhaitez copier un répertoire entier dans un autre endroit.

Vous souhaitez le copier récursivement, tous les fichiers et sous-répertoires, dans le nouvel emplacement.

Solution

Utilisez le Fichier :: copyDirectory () méthode.

$ Success = File :: CopyDirectory ($ Sourcedir, $ DestinationDir);

La méthode reviendra vrai si tous les fichiers et sous-répertoires sont copiés avec succès.

Si le répertoire de destination n'existe pas, il sera créé. Il sera créé récursivement au besoin.

Discussion

Il y a un troisième argument facultatif.

En interne, le Fichier :: copyDirectory () La méthode utilise la classe FileSystemiterator de PHP pour scanner les fichiers et les répertoires à copier. Le fichiermiterator prend les drapeaux comme un deuxième paramètre. Vous pouvez passer un troisième argument à Fichier :: copyDirectory () qui est transmis au constructeur de limeSystemiterator. Par défaut, Fichier :: copyDirectory () utilise la constante Skip_dots.

Cela signifie que les fichiers commençant par des points ne sont pas copiés.

Soyez prudent en utilisant cette troisième option. Le Fichier :: copyDirectory () La méthode ne peut pas se comporter comme prévu à moins que vous ne compreniez bien comment le Systemiterator de fichiers est utilisé pour la traversée du répertoire.