public void copie(HDD dirSource, HDD dirDest)
	{
	// on copie chaque fichier de source dans dest
	// s'il existe dans dest, on teste la date de modification de fichier
	// afin de copier uniquement les fichiers mofifiés
	
	String nomficSRC;
	String nomficDST;	
	
	File folder=new File(dirSource.getPath());
	
	File[] files = folder.listFiles();
	if(files==null) 
		{
		parentFen.zoneTexte.append("ERREUR DE LECTURE : "+folder.getPath()+"\r\n");
		return;
		}

	for (final File fileEntry : folder.listFiles())
		{
		// impossible de remplacer dans une chaine avec des backslash donc on passe en /
		nomficSRC=fileEntry.getPath().replaceAll("\\\\", "/");  
		nomficDST=nomficSRC.replaceAll("^"+this.pathSRC0.replaceAll("\\\\", "/"),this.pathDST0.replaceAll("\\\\", "/")); 

		// Fichier à Skipper ?
		if(src.myInArray(fileEntry.getPath(),src.getExclude())) // gestion des exclusions
			{
			parentFen.zoneTexte.append("SKIP : "+nomficSRC+"\r\n");			 
			continue;
			}
						
		// si c'est un dossier
		if(fileEntry.isDirectory())
			{
			// on poursuit dans l'arborescence
			this.copie(new HDD(nomficSRC,parentFen,"SOURCE"),new HDD(nomficDST,parentFen,"DESTINATION"));
			}
						
		// si c'est un fichier
		else
			{
			cptPourcent++;
			parentFen.lblInfo.setText((Math.round((cptPourcent*100)/nbfilesSRC))+"% "+nomficSRC+"\r"); // %tage
					
			// Le fichier source existe en dest
			File fileTmp=new File(nomficDST);
			if(fileTmp.exists())
				{
				// On compare les dates de modification
				long dateSrc=fileEntry.lastModified();
				long dateDst=fileTmp.lastModified();
							
				// Fichier source modifié -> on copie
				if(dateSrc>dateDst)
					{
					//echo "\nSource modifiée donc copie : $nomficSRC\n";
					copyStats(new File(nomficSRC),new File(nomficDST));
					}
							
				// Le fichier de destination a une date différente -> on copie aussi
				else if(dateSrc<dateDst)
					{
					//echo "\nFichier de destination avec date différente donc copie : $nomficDST\n";
					copyStats(new File(nomficSRC),new File(nomficDST));
					}
			
				// Donc si date identique, pas de copie
				}
							
			// Le fichier source n'existe pas en dest
			else
				{
				// création récursive des dossiers de destination
				String tmp1=fileTmp.getParent();
				File tmp2=new File(tmp1);
				if(!tmp2.isDirectory()) {tmp2.mkdirs();}
				
				// Copie du fichier
				copyStats(new File(nomficSRC),new File(nomficDST));
				}

			} // else de if(is_dir($nomficSRC))
			
		} // while()
	} // public void copie(...)