Probleme repertoire [Résolu]

cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 23 août 2005 à 17:18 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 25 août 2005 à 01:51
Bonjour à tous,



En faite j'ai un repertoire avec pleins de fichier et je voudrais les copier vers un repertoire, quel est la meilleur méthode ?



J'ai essayé DirectoryInfo et la propriété Move mais c'est pas terrible.



Par avance, merci.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 23 août 2005 à 17:26
3
Merci
Salut, Essayes Directory.Move( .. )

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de Lutinore
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 23 août 2005 à 17:30
3
Merci
ou File.Copy( ... ), non ?

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de Lutinore
Meilleure réponse
t_barbillon 341 Messages postés mercredi 8 juin 2005Date d'inscription 10 février 2009 Dernière intervention - 24 août 2005 à 08:44
3
Merci
Salut,
La méthode de Lutinore marche, par contre il me semble pas que les éventuelles sous dossiers soient copiés.
Il faut faire une fonction récursive du style :

//Copie d'un dossier (contenu et dossier enfant avec leur contenu)
public static bool CopyFolder(string SourcePath, string DestPath, bool Deep)
{
bool IsSuccess = true;
Directory.CreateDirectory(DestPath);//création du dossier

//Ajout des fichiers contenus à la racine de SourcePath
string[] CopiedFiles = Directory.GetFiles(SourcePath, "*.*");
foreach (string CopiedFile in CopiedFiles)
{
string PastedFile = CopiedFile.Replace(SourcePath, DestPath);
try
{
File.Copy(CopiedFile, PastedFile, true);
IsSuccess = true;
catch
{
//Permet d'éviter tous un tas de pb
// IsSuccess = false;
}
}

//Ajout des sous-dossiers contenus dans SourcePath
string[] CopiedFolders = Directory.GetDirectories(SourcePath, "*.*");
foreach (string CopiedFolder in CopiedFolders)
{
//Création du sous dossier
string PastedFolder = CopiedFolder.Replace(SourcePath, DestPath);
Directory.CreateDirectory(PastedFolder);

//Ajout des contenus (fichier et dossier) des sous dossiers
if (Deep == true)
{
IsSuccess &= CopyFolder(CopiedFolder, PastedFolder, true);
}
}
return IsSuccess;
}

PS : Je sais c'est pas trop optimisé, mais bon c'est une idée comme ça

Merci t_barbillon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de t_barbillon
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 25 août 2005 à 01:51
3
Merci
Salut, t_barbillon tu as raison, il faut utiliser la récursivité, voilà une autre version:

// ex: CopyDirectory( "D:\\DATA", "D:\\TEMP\\DATA", true );
private void CopyDirectory( string src, string dst, bool overwrite )
{
if ( !Directory.Exists( dst ) )
Directory.CreateDirectory( dst );


foreach ( string file in Directory.GetFiles( src ) )
File.Copy( file, dst + Path.DirectorySeparatorChar + Path.GetFileName( file ), overwrite );


foreach ( string dir in Directory.GetDirectories( src ) )
CopyDirectory( dir, dst + Path.DirectorySeparatorChar + Path.GetFileName( dir ), overwrite );
}

J'ai pas testé longtemps donc j'espère que ca plante pas ; )

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 117 internautes ce mois-ci

Commenter la réponse de Lutinore
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 23 août 2005 à 17:27
0
Merci
ok, merci bien.
Commenter la réponse de cs_emmanuel9
cs_emmanuel9 903 Messages postés mercredi 23 février 2005Date d'inscription 16 juin 2010 Dernière intervention - 24 août 2005 à 09:57
0
Merci
ok, merci
Commenter la réponse de cs_emmanuel9

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.