IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

copie récursive répertoire


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut copie récursive répertoire
    Bonjour

    Je cherche à faire une copie récursive ( repertoire , ss-repertoire, ss-ss-repertoire ... ) d'un repertoire donné coté serveur dont je connais pas à l'avance la profondeur ...

    Merci pour votre aide.
    Take it HiSy

  2. #2
    Rédacteur
    Avatar de BrYs
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 014
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 014
    Points : 3 522
    Points
    3 522
    Par défaut
    glob

    en utililsant GLOB_ONLYDIR pour récupérer tout tes repertoire

    Et ensuite tu fais un glob tu chaque repertoire et tu copie.

    Voila.

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Bonjour et merci pour cet élément de réponse.

    Je ne connaissais pas la fonction glob ...

    Mais sauf mauvaise utilisation de ma part elle ne me retourne que les repertoires de premier niveau !!!

    Du coup il faut boucler autant de fois qu'il y a de niveaux et je me heurte de nouveau à ma "récursivité à dimension variable" ...

    Take it HiSy

  4. #4
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Citation Envoyé par hisy
    Du coup il faut boucler autant de fois qu'il y a de niveaux et je me heurte de nouveau à ma "récursivité à dimension variable" ...
    Soit tu boucles, soit tu fais de la récursion, il est très rare d'avoir à faire les 2

    Et pour la récursivité, tu n'as heureusement pas besoin de connaître la profondeur de ton arborescence (en fait, tu n'en as pas besoin non plus si tu fais des boucles : toute procédure récursive est transformable en procédure itérative mais bon, c'est un peu plus lourd en général...)

    Bref, sans doute quelque chose d'assez basique comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function browseDir( $dir ) {
      $hdir = opendir( $dir );
      while ( $item = readdir( $hdir ) ) {
        if ( is_dir( $item ) ) {
          // Répertoire => récursion
          /*traitements*/
          browseDir( $item );
          /*traitements*/
        }
        else {
           // Fichier => pas de récursion
          /*traitements*/
        } 
      }
      closedir( $hdir );
    }

  5. #5
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Merci à Herode qui m'a fait 99% du taff

    J'en suis arrivé à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    class CopieRecursive{
    	var $copie;
    	function copie( $dir, $dirDest ) {
    	   mkdir($dirDest);
    	  $hdir = opendir( $dir );
    	  while ( $item = readdir( $hdir ) ) {
    	  	if($item=="." | $item=="..") continue;
    		if ( is_dir( $dir.'/'.$item ) ) {
    		  // Répertoire => récursion
    		  /*traitements*/
    		  $this->copie( $dir.'/'.$item, $dirDest.'/'.$item );
    		}
    		else {
    		   copy($dir.'/'.$item,$dirDest.'/'.$item);
    		} 
    	  }
    	  closedir( $hdir );
    	}
    }
    que J'appelle en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $CopieRecursive=new CopieRecursive();
    $CopieRecursive->copie($sources,$destination);
    $sources étant un repertoire...

    Et ça marche
    Take it HiSy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2013, 12h54
  2. Copie récursive et sous répertoires
    Par viewtifulced dans le forum Administration système
    Réponses: 2
    Dernier message: 16/02/2009, 15h54
  3. Copie récursive d'un répertoire
    Par narmataru dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/09/2006, 18h06
  4. Copie récursive de répertoire
    Par Furius dans le forum Langage
    Réponses: 21
    Dernier message: 11/01/2006, 19h25
  5. Copie de répertoire
    Par Mateo dans le forum C
    Réponses: 3
    Dernier message: 10/06/2004, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo