begin process at 2012 02 11 18:09:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > COPIER UN REPERTOIRE OU DEPLACER UN REPERTOIRE

COPIER UN REPERTOIRE OU DEPLACER UN REPERTOIRE




 Description

Alors vu que j'ai eu du mal à trouver ce genre de script j'en ai fait un et je le met à porter de tout le monde.
C'est donc une fonction qui permet de déplacer (ou copier) un repertoire et son contenu dans un autre repertoire.

Source

  • <?php
  • /*-------------------------------------------------------------------------------------
  • FONCTION PRINCIPAL DEPLACER REPERTOIRE
  • -------------------------------------------------------------------------------------*/
  • function Deplacer_Repertoire($Source,$Cible,$SupprimerOriginal=false){
  • if(substr($Source,-1,1)!=DIRECTORY_SEPARATOR){$Source.=DIRECTORY_SEPARATOR;}
  • if(substr($Cible,-1,1)!=DIRECTORY_SEPARATOR){$Cible.=DIRECTORY_SEPARATOR;}
  • $Rep_Source = opendir($Source);
  • while($Contenu = readdir($Rep_Source)){
  • if($Contenu != "." and $Contenu!=".."){
  • if(is_dir($Source.$Contenu) ){
  • mkdir($Cible.$Contenu);
  • Deplacer_Repertoire($Source.$Contenu,$Cible.$Contenu);
  • if($SupprimerOriginal){
  • rmdir($Source.$Contenu);
  • }
  • }else{
  • if($SupprimerOriginal){
  • rename($Source.$Contenu,$Cible.$Contenu);
  • }else{
  • copy($Source.$Contenu,$Cible.$Contenu);
  • }
  • }
  • }
  • }
  • closedir($Rep_Source);
  • if($SupprimerOriginal){
  • rmdir($Source);
  • }
  • }
  • /*-------------------------------------------------------------------------------------
  • COMMANDE DE DEPLACEMENT
  • -------------------------------------------------------------------------------------*/
  • Deplacer_Repertoire(dirname(__FILE__).DIRECTORY_SEPARATOR."melrose".DIRECTORY_SEPARATOR, dirname(__FILE__).DIRECTORY_SEPARATOR."Ok".DIRECTORY_SEPARATOR);
  • ?>
<?php
/*-------------------------------------------------------------------------------------
						FONCTION PRINCIPAL DEPLACER REPERTOIRE
-------------------------------------------------------------------------------------*/
function Deplacer_Repertoire($Source,$Cible,$SupprimerOriginal=false){
	if(substr($Source,-1,1)!=DIRECTORY_SEPARATOR){$Source.=DIRECTORY_SEPARATOR;}
	if(substr($Cible,-1,1)!=DIRECTORY_SEPARATOR){$Cible.=DIRECTORY_SEPARATOR;}
	
	
	$Rep_Source = opendir($Source);   
      
	while($Contenu = readdir($Rep_Source)){   
		if($Contenu != "." and $Contenu!=".."){ 
			if(is_dir($Source.$Contenu) ){   
				mkdir($Cible.$Contenu);
				Deplacer_Repertoire($Source.$Contenu,$Cible.$Contenu);
				if($SupprimerOriginal){
					rmdir($Source.$Contenu);
				}
			}else{ 
				if($SupprimerOriginal){
					rename($Source.$Contenu,$Cible.$Contenu);
				}else{
					copy($Source.$Contenu,$Cible.$Contenu);
				} 
			}   
		}   
      
    }   
      
     closedir($Rep_Source);   
	if($SupprimerOriginal){
		rmdir($Source);
	}  

}
/*-------------------------------------------------------------------------------------
						COMMANDE DE DEPLACEMENT
-------------------------------------------------------------------------------------*/
Deplacer_Repertoire(dirname(__FILE__).DIRECTORY_SEPARATOR."melrose".DIRECTORY_SEPARATOR, dirname(__FILE__).DIRECTORY_SEPARATOR."Ok".DIRECTORY_SEPARATOR);
?>



 Sources du même auteur

Source avec Zip EVALUER UNE EXPRESSION À PARTIR D'UNE CHAINE DE CARACTÈRE
Source avec Zip [POO] - CLASSE D'ACCÈS BDD MULTI SGBD
Source avec Zip GEO-LOCALISATION (CONTINENT)
SECURITÉ PROTECTION AUTOMATIQUE CONTRE MAGICQUOTE ET REGISTE...
Source avec Zip DECOMPOSEUR DE PDF (EXTRACTION DES PAGES) -[PHP-5 ORIENTÉ OB...

 Sources de la même categorie

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

Commentaires et avis

Commentaire de Renfield le 26/03/2009 21:08:26 administrateur CS

Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé

Commentaire de TheWeasel47 le 26/03/2009 21:38:40

Bah ouais je sais bien ce n'est pas la première source que j'ajoute mais pour celle la j'ai eu un bug quand j'ai cliqué sur prévisualisation.
IL me marqué que la source été désactivé.
pour info j'étais sous IE :D
Bon Courage pour la correction.

Commentaire de codefalse le 27/03/2009 10:09:06 administrateur CS

Sur ta source, ou plutôt fonction, il manque de nombreux éléments de vérification importantes, telles que vérifier si le répertoire dans lequel tu déplace à les droits en écriture, si la copie/suppression à réussi, etc.

De plus, avec l'arrivée de PHP 5.2 (dois-je vraiment dire la date?), est arrivé la SPL, qui te permet dans ton cas de parcourir un répertoire de manière beaucoup plus performante que les vieux opendir/readdir. Regarde du côté de DirectoryIterator.

Le nom de ta fonction ne convient pas. En effet, outre le fait qu'elle ne soit pas anglaise (mais ce n'est pas un problème en soi ;)), le terme "déplacer" perd tout son intérêt lorsque tu met le dernier paramètre à false. En effet, tu ne fait plus un déplacement mais une copie !

J'aurais plus vu une classe statique, avec une méthode cp et une méthode mv, qui appèlent toute deux une méthode privée qui s'occupe de déplacer récursivement ou pas un fichier/répertoire, en fonction des paramètres données.
Avec ceci j'aurai joué sur la classe DirectoryIterator pour le parcours de dossier/fichier et j'aurais lancé des exceptions si je n'avais pas le droit de copier/déplacer/supprimer un élément.

Voilà quelques idées d'améliorations ;)

Commentaire de TheWeasel47 le 27/03/2009 11:20:32

Merci pour ces pistes d'amélioration de ma source.
Je note :
   - Vérification des droits.
   - SPL
   - Revoir le nom de la fonction
   - Exeption
   - Schéma de Classe
Merci bien prochaine version la semaine prochaine !
Cordialement
TheWeasel47

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales