Table des matières
Méthode 2
Grammaire
Exemple
Sortie
Description du code
方法2
语法
示例
代码说明
结论
Maison développement back-end tutoriel php Copiez tout le contenu d'un répertoire vers un autre répertoire en PHP

Copiez tout le contenu d'un répertoire vers un autre répertoire en PHP

Aug 29, 2023 pm 02:41 PM
文件操作 php程序 Copie du répertoire

Copiez tout le contenu dun répertoire vers un autre répertoire en PHP

Qu'est-ce que PHP ?

PHP signifie Hypertext Preprocessor et est un langage de script côté serveur largement utilisé, principalement utilisé pour le développement Web. Il fournit aux développeurs une plate-forme puissante et flexible pour créer des pages Web et des applications dynamiques. PHP peut être intégré dans du code HTML, permettant une intégration transparente des fonctionnalités côté serveur avec des éléments côté client. Sa syntaxe est similaire à celle du C et de Perl, ce qui la rend relativement facile à apprendre et à utiliser pour les programmeurs familiarisés avec ces langages. PHP permet d'exécuter des scripts côté serveur sur un serveur Web, générant ainsi un contenu dynamique pouvant être transmis au navigateur de l'utilisateur. Il prend en charge une variété de bases de données et convient au développement de sites Web basés sur des bases de données. De plus, PHP offre un vaste écosystème de bibliothèques et de frameworks open source qui facilitent un développement rapide et améliorent la réutilisabilité du code. Grâce à son solide soutien communautaire et à sa documentation complète, PHP reste un choix populaire parmi les développeurs Web du monde entier.

PHP Copiez tout le contenu d'un répertoire dans un autre répertoire

Ici, nous utilisons la classe scandir() et RecursiveIteratorIterator pour copier l'intégralité du contenu d'un répertoire vers un autre répertoire.

Méthode 1

Utilisez scandir()

Ensuite, scandir() accepte un certain nombre d'arguments et, si aucune erreur ne se produit, renvoie une liste de noms de fichiers dans le répertoire.

Grammaire

array scandir(string $directory, int $sorting_order = 
SCANDIR_SORT_ASCENDING, resource|null $context = null)
Copier après la connexion
  • $directory (string) : Le chemin d'accès au répertoire à analyser.

  • $sorting_order (int, facultatif) : Spécifie l'ordre de tri des résultats. Il peut prendre l'une des valeurs suivantes :

  • SCANDIR_SORT_ASCENDING (par défaut) : trier les résultats par ordre croissant.

  • SCANDIR_SORT_DESCENDING : Trier les résultats par ordre décroissant.

  • SCANDIR_SORT_NONE : Aucun tri n'est effectué.

  • $context (resource|null, facultatif) : Spécifie la ressource de contexte créée à l'aide de stream_context_create(). Il permet de modifier le comportement de la fonction scandir(). S’il n’est pas fourni, null est utilisé.

  • Valeur de retour : la fonction scandir() renvoie un tableau de noms de fichiers et de répertoires dans le répertoire spécifié. Il comprend des fichiers et des répertoires réguliers. Le tableau résultant contient des entrées spéciales. et .. représentent respectivement le répertoire actuel et le répertoire parent.

Exemple

Voici un exemple d'utilisation de scandir() pour copier l'intégralité du contenu d'un répertoire vers un autre répertoire en PHP.

<?php
function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $files = scandir($source);
   foreach ($files as $file) {
      if ($file !== '.' && $file !== '..') {
         $sourceFile = $source . '/' . $file;
         $destinationFile = $destination . '/' . $file;
         if (is_dir($sourceFile)) {
            copyDirectory($sourceFile, $destinationFile);
         } else {
            copy($sourceFile, $destinationFile);
         }
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
?>
Copier après la connexion

Sortie

There will be no output if the process is successful.
Copier après la connexion
Copier après la connexion

Description du code

Ce code définit une fonction appelée copyDirectory, qui est chargée de copier récursivement le contenu du répertoire source vers le répertoire cible. La fonction vérifie d'abord si le répertoire cible n'existe pas et le crée en utilisant mkdir() si nécessaire. Il utilise ensuite scandir() pour récupérer une liste de fichiers et de répertoires dans le répertoire source. Il parcourt chaque élément, à l'exclusion des entrées . et .., et construit les chemins d'accès aux fichiers source et de destination. Si l'élément est un répertoire, la fonction s'appelle de manière récursive avec le nouveau chemin. S'il s'agit d'un fichier, utilisez la fonction copy() pour copier le fichier de la source vers la destination. Ce processus se poursuit jusqu'à ce que tout le contenu du répertoire source ait été copié dans le répertoire cible, y compris les sous-répertoires et leurs fichiers respectifs. Enfin, la fonction est appelée avec les répertoires source et destination fournis comme arguments pour effectuer l'opération de copie.

Méthode 2

Utilisez la classe RecursiveIteratorIterator avec RecursiveDirectoryIterator

Ici, nous utiliserons deux classes pour accomplir la tâche.

Grammaire

bool mkdir(string $pathname, int $mode = 0777, bool $recursive = 
false, resource|null $context = null)
Copier après la connexion
Copier après la connexion
  • $pathname (string) : Le chemin d'accès au répertoire à créer.

  • $mode (int, facultatif) : autorisations à définir pour le répertoire nouvellement créé. Il est spécifié sous forme de valeur octale.

  • $recursive (booléen, facultatif) : si défini sur true, active la création récursive de répertoires parents.

  • $context (resource|null, facultatif) : Spécifie la ressource de contexte créée à l'aide de stream_context_create().

  • Valeur de retour : la fonction mkdir() renvoie vrai en cas de succès et faux en cas d'échec.

Exemple

Voici un exemple utilisant la méthode ci-dessus.

function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $iterator = new RecursiveIteratorIterator(
      new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
      RecursiveIteratorIterator::SELF_FIRST
   );
   foreach ($iterator as $item) {
      if ($item->isDir()) {
         $dir = $destination . '/' . $iterator->getSubPathName();
         if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
         }
      } else {
         $file = $destination . '/' . $iterator->getSubPathName();
         copy($item, $file);
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
Copier après la connexion
Copier après la connexion

Sortie

There will be no output if the process is successful.
Copier après la connexion
Copier après la connexion

Description du code :

Ce code définit une fonction appelée copyDirectory, qui est chargée de copier récursivement le contenu du répertoire source vers le répertoire cible. La fonction vérifie d'abord si le répertoire cible n'existe pas et le crée en utilisant mkdir() si nécessaire. Il utilise ensuite scandir() pour récupérer une liste de fichiers et de répertoires dans le répertoire source. Il parcourt chaque élément, à l'exclusion des entrées . et .., et construit les chemins d'accès aux fichiers source et de destination. Si l'élément est un répertoire, la fonction s'appelle de manière récursive avec le nouveau chemin. S'il s'agit d'un fichier, utilisez la fonction copy() pour copier le fichier de la source vers la destination. Ce processus se poursuit jusqu'à ce que tout le contenu du répertoire source ait été copié dans le répertoire cible, y compris les sous-répertoires et leurs fichiers respectifs. Enfin, la fonction est appelée avec les répertoires source et destination fournis comme arguments pour effectuer l'opération de copie.

方法2

将 RecursiveIteratorIterator 类与 RecursiveDirectoryIterator 一起使用

这里我们将使用两个类来完成任务。

语法

bool mkdir(string $pathname, int $mode = 0777, bool $recursive = 
false, resource|null $context = null)
Copier après la connexion
Copier après la connexion
  • $pathname(字符串):要创建的目录的路径。

  • $mode(int,可选):为新创建的目录设置的权限。它被指定为八进制值。

  • $recursive(布尔型,可选):如果设置为 true,则启用父目录的递归创建。

  • $context(resource|null,可选):指定使用stream_context_create()创建的上下文资源。

  • 返回值:mkdir() 函数在成功时返回 true,在失败时返回 false。

示例

这里是使用上述方法的一个例子。

function copyDirectory($source, $destination) {
   if (!is_dir($destination)) {
      mkdir($destination, 0755, true);
   }
   $iterator = new RecursiveIteratorIterator(
      new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
      RecursiveIteratorIterator::SELF_FIRST
   );
   foreach ($iterator as $item) {
      if ($item->isDir()) {
         $dir = $destination . '/' . $iterator->getSubPathName();
         if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
         }
      } else {
         $file = $destination . '/' . $iterator->getSubPathName();
         copy($item, $file);
      }
   }
}
$sourceDirectory = '/source/directory';
$destinationDirectory = '/destination/directory';
copyDirectory($sourceDirectory, $destinationDirectory);
Copier après la connexion
Copier après la connexion

代码说明

在此方法中,RecursiveDirectoryIterator 用于迭代目录结构,包括所有子目录和文件。 RecursiveIteratorIterator 有助于递归地遍历迭代器。它会跳过 .和 .. 使用 SKIP_DOTS 标志的条目。在循环内,它检查当前项是否是目录。如果是这样,它会使用 mkdir() 在目标路径中创建相应的目录(如果该目录尚不存在)。如果该项目是文件,它将构造目标文件路径并使用 copy() 复制文件。此方法消除了对单独递归函数的需要,并通过利用内置 PHP 迭代器类的功能简化了代码。

结论

综上所述,两种方法都可以达到预期的结果,但第二种使用迭代器的方法提供了更优雅、更高效的解决方案,特别是对于涉及大型目录结构的场景。不过,这两种方法的选择最终取决于开发者的具体要求和偏好。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment lire et écrire des fichiers en toute sécurité avec Golang ? Comment lire et écrire des fichiers en toute sécurité avec Golang ? Jun 06, 2024 pm 05:14 PM

Lire et écrire des fichiers en toute sécurité dans Go est crucial. Les directives incluent : Vérification des autorisations de fichiers Fermeture de fichiers à l'aide de reports Validation des chemins de fichiers Utilisation de délais d'attente contextuels Le respect de ces directives garantit la sécurité de vos données et la robustesse de vos applications.

Puis-je supprimer les fichiers gho ? Puis-je supprimer les fichiers gho ? Feb 19, 2024 am 11:30 AM

Un fichier gho est un fichier image créé par le logiciel NortonGhost et utilisé pour sauvegarder et restaurer le système d'exploitation et les données. Dans certains cas, vous pouvez supprimer les fichiers gho, mais faites-le avec prudence. Cet article présentera le rôle des fichiers gho, les précautions à prendre pour supprimer les fichiers gho et comment supprimer les fichiers gho. Tout d’abord, comprenons le rôle des fichiers gho. Un fichier gho est un fichier compressé de sauvegarde du système et des données qui peut enregistrer une image d'un disque dur entier ou d'une partition spécifique. Ce type de fichier de sauvegarde est généralement utilisé pour la récupération d'urgence

Comment réparer : erreur d'opération de fichier Java : échec de l'écriture du fichier Comment réparer : erreur d'opération de fichier Java : échec de l'écriture du fichier Aug 26, 2023 pm 09:13 PM

Comment résoudre : Erreur d'opération de fichier Java : échec de l'écriture de fichier Dans la programmation Java, vous rencontrez souvent le besoin d'opérations sur les fichiers, et l'écriture de fichiers est l'une des fonctions importantes. Cependant, nous rencontrons parfois des erreurs d’échec d’écriture de fichier, qui peuvent empêcher le programme de fonctionner correctement. Cet article décrit quelques causes courantes et solutions pour vous aider à résoudre ce type de problème. Mauvais chemin : un problème courant est un mauvais chemin de fichier. Lorsque nous essayons d'écrire un fichier sur le chemin spécifié, si le chemin n'existe pas ou si les autorisations sont insuffisantes, le fichier sera écrit.

Conseils de programmation Go : suppression du contenu d'un fichier Conseils de programmation Go : suppression du contenu d'un fichier Apr 04, 2024 am 10:06 AM

Le langage Go propose deux méthodes pour effacer le contenu d'un fichier : en utilisant io.Seek et io.Truncate, ou en utilisant ioutil.WriteFile. La méthode 1 consiste à déplacer le curseur à la fin du fichier, puis à tronquer le fichier, la méthode 2 consiste à écrire un tableau d'octets vide dans le fichier. Le cas pratique montre comment utiliser ces deux méthodes pour effacer le contenu des fichiers Markdown.

Apprenez les fonctions d'exploitation des fichiers en langage Go et implémentez les fonctions de cryptage, de compression, de téléchargement et de téléchargement des fichiers. Apprenez les fonctions d'exploitation des fichiers en langage Go et implémentez les fonctions de cryptage, de compression, de téléchargement et de téléchargement des fichiers. Jul 29, 2023 pm 10:37 PM

Apprenez les fonctions d'exploitation des fichiers dans le langage Go et implémentez les fonctions de cryptage, de compression, de téléchargement et de téléchargement des fichiers. Le langage Go est un langage de programmation open source à typage statique. Il est très populaire dans le domaine du développement pour ses performances efficaces et sa syntaxe concise. La bibliothèque standard du langage Go offre une multitude de fonctions d'exploitation de fichiers, ce qui rend très simple la lecture et l'écriture de fichiers, leur chiffrement et leur compression, leur chargement et leur téléchargement. Cet article expliquera comment utiliser les fonctions d'exploitation de fichiers dans le langage Go pour implémenter les fonctions de cryptage, de compression, de téléchargement et de téléchargement de fichiers. Tout d'abord, nous devons importer les trois

Exemple d'opération de fichier PHP : lecture d'un fichier CSV Exemple d'opération de fichier PHP : lecture d'un fichier CSV Jun 20, 2023 am 11:42 AM

PHP est un langage de programmation populaire largement utilisé dans le développement Web. Dans les applications Web, les opérations sur les fichiers constituent une fonction basique et courante. Cet article explique comment utiliser PHP pour lire un fichier CSV et l'afficher dans un tableau HTML. CSV est un format de fichier courant utilisé pour importer des données tabulaires dans un tableur tel qu'Excel. Les fichiers CSV se composent généralement de plusieurs lignes, chaque ligne étant constituée de valeurs séparées par des virgules. La première ligne contient généralement des en-têtes de colonne, qui décrivent la signification de chaque valeur de colonne. Ici, nous utiliserons PHP

Comment insérer du contenu à un emplacement spécifié dans un fichier en utilisant C++ ? Comment insérer du contenu à un emplacement spécifié dans un fichier en utilisant C++ ? Jun 04, 2024 pm 03:34 PM

En C++, utilisez la classe ofstream pour insérer du contenu à un emplacement spécifié dans un fichier : ouvrez le fichier et localisez le point d'insertion. utiliser

Comment acquérir des compétences en manipulation de fichiers en PHP8 en écrivant du code Comment acquérir des compétences en manipulation de fichiers en PHP8 en écrivant du code Sep 12, 2023 pm 04:25 PM

Comment acquérir des compétences en matière d'exploitation de fichiers en PHP8 en écrivant du code. PHP est un langage de script largement utilisé dans le développement Web. Il peut facilement gérer des fichiers, comme lire et écrire des fichiers, créer des répertoires, etc. Il est très important que les développeurs maîtrisent les compétences en matière d'exploitation de fichiers PHP. Cet article explique comment acquérir des compétences en matière d'exploitation de fichiers en PHP8 en écrivant du code. Étape 1 : Configurer un environnement de développement PHP. Avant d'acquérir les compétences en matière d'exploitation de fichiers PHP, nous devons d'abord configurer un environnement de développement PHP.

See all articles