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

C# Discussion :

Copie de fichiers


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 42
    Par défaut Copie de fichiers
    Bonjour,

    Tout d'abord Bonne année, meilleurs voeux.

    J'ai une arboresence de répertoire contenant des sous repertoires

    J'ai besoin de faire une copie de ces sous reprtoires uniquement si le nom de ces sous repertoires est "RECORDS"

    Comment je peux faire ça ?

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Salut,

    Tu trouvera toutes les méthodes pour t'aider : System.IO.File sur MSDN

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Par défaut
    Fonction provenant du MSDN non testé...

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    using System;
    using System.IO;
     
    class CopyDir
    {
        public static void Copy(string sourceDirectory, string targetDirectory)
        {
            string GetThisDir = "false";
            DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
            DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);
     
            foreach (DirectoryInfo SubDir in sourceDirectory.GetDirectories())
            {
                if(SubDir.Name == "RECORDS") {
                    GetThisDir = "true";
                }
            }
     
            if(GetThisDir == "true") { CopyAll(diSource, diTarget); }
        }
     
        public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
        {
            // Check if the target directory exists, if not, create it.
            if (Directory.Exists(target.FullName) == false)
            {
                Directory.CreateDirectory(target.FullName);
            }
     
            // Copy each file into it's new directory.
            foreach (FileInfo fi in source.GetFiles())
            {
                Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
                fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
            }
     
            // Copy each subdirectory using recursion.
            foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
            {
                DirectoryInfo nextTargetSubDir =
                    target.CreateSubdirectory(diSourceSubDir.Name);
                CopyAll(diSourceSubDir, nextTargetSubDir);
            }
        }
     
        public static void Main()
        {
            string sourceDirectory = @"c:\sourceDirectory";
            string targetDirectory = @"c:\targetDirectory";
     
            Copy(sourceDirectory, targetDirectory);
        }
     
        // Output will vary based on the contents of the source directory.
    }

  4. #4
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Cette source MSDN peut t'éclairer. En gros, tu peux faire un truc du genre:
    Code c# : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
            {
                // Get the subdirectories for the specified directory.
                DirectoryInfo dir = new DirectoryInfo(sourceDirName);
                DirectoryInfo[] dirs = dir.GetDirectories();
     
                if (!dir.Exists)
                {
                    throw new DirectoryNotFoundException(
                        "Source directory does not exist or could not be found: "
                        + sourceDirName);
                }
     
                // If the destination directory doesn't exist, create it.
                if (!Directory.Exists(destDirName))
                {
                    Directory.CreateDirectory(destDirName);
                }
     
                // Get the files in the directory and copy them to the new location.
                FileInfo[] files = dir.GetFiles();
                foreach (FileInfo file in files)
                {
                    string temppath = Path.Combine(destDirName, file.Name);
                    file.CopyTo(temppath, false);
                }
     
                // If copying subdirectories, copy them and their contents to new location.
                if (copySubDirs)
                {
                    foreach (DirectoryInfo subdir in dirs)
                    {
                        // S'assure que le nom du répertoire est "RECORDS"
                        if (subdir.Name.Equals("RECORDS")) 
                        {
                            string temppath = Path.Combine(destDirName, subdir.Name);
                            DirectoryCopy(subdir.FullName, temppath, copySubDirs);
                        }
     
                    }
                }
            }

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 42
    Par défaut
    Merci de vos réponses.

    callo : Ca copie bien les répértoires mais pas les fichiers. La fonction CopyTo ne fonctionne pas

    Aurais tu une alternative ?

    Merci d'avance

  6. #6
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Essaye avec ceci:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // ...
    if (System.IO.Directory.Exists(sourcePath)) 
    { 
        string[] files = System.IO.Directory.GetFiles(sourcePath); 
        foreach (string s in files) 
        { 
           fileName = System.IO.Path.GetFileName(s); 
           destFile = System.IO.Path.Combine(targetPath, fileName); 
           System.IO.File.Copy(s, destFile, true); 
        } 
    }
    Pour plus de détails, regarde ceci.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 42
    Par défaut
    En fait je me suis trompé.

    Le répértoire n'est pas un cran au dessous du répértoire racine mais deux crans :

    ROOT
    1
    RECORDS
    TEMP
    BIN
    2
    RECORDS
    TEMP
    BIN

    etc...etc...

    Je dois toujours copier le contenu du répértoire RECORDS sur un autre serveur.

    Les codes que vous m'avez fourni ne fonctionnent que si le répértoire RECORDS est un cran au dessous du root

    J espere avoir été compréhensible

    Merci d'avance de vos réponses

Discussions similaires

  1. Copie de fichier sur le bureau
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/05/2005, 20h57
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 22h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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