none
Copier des fichiers RRS feed

  • Question

  • Bonjour ;

    merci de m'aider pour ce probléme donc j'ai des nom de fichiers qui apparait dans une liste box et un dossiers qui contient plusieurs fichiers y compris qui apparait dans ma listbox dans je veux copier les fichiers qui apparait leurs noms dans la liste box vers un nouveau dossier j'ai essayé ce come mais ça marche pas;

     string paths = textBox1.Text;
    
                                    string filename = paths + "\\untreated file";
                                    if (!Directory.Exists(filename)) //Si le dossier n'existe pas 
                                        Directory.CreateDirectory(filename); //On le cré
    
                                    string sourceDirectory = path;
                                    string archiveDirectory = filename;
                                   
                                        if (listBox2.Items.ToString() == Path.GetFileNameWithoutExtension(sourceDirectory))
                                        {
                                            foreach (string item in listBox2.Items)
                                            {
                                                foreach (string FileName in System.IO.Directory.GetFiles(sourceDirectory))
                                            {
    
                                                string fileName = Path.GetFileName(FileName);
                                                File.Copy(Path.Combine(sourceDirectory, fileName), Path.Combine(archiveDirectory, fileName));
    
                                            }
    
                                        }
                                    }

    mercredi 4 septembre 2013 08:08

Réponses

  • Bonjour,

    Je serais vous, je renommerais la 1ere variable :

    string targetFolder = paths + "\\untreated file";

    Ensuite, dans votre foreach, renommez également les varialbes (faire une différence entre 2 variables uniquement avec la casse est dangereux).

    Une fois que vous aurez bien nommé vos variables, je suis persuadé que vous trouverez la solution (car "l'algo" semble bon ;-))


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Proposé comme réponse Aurel Bera jeudi 5 septembre 2013 12:50
    • Marqué comme réponse sarraarfaoui lundi 9 septembre 2013 08:05
    mercredi 4 septembre 2013 10:04

Toutes les réponses

  • Bonjour,

    Je serais vous, je renommerais la 1ere variable :

    string targetFolder = paths + "\\untreated file";

    Ensuite, dans votre foreach, renommez également les varialbes (faire une différence entre 2 variables uniquement avec la casse est dangereux).

    Une fois que vous aurez bien nommé vos variables, je suis persuadé que vous trouverez la solution (car "l'algo" semble bon ;-))


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Proposé comme réponse Aurel Bera jeudi 5 septembre 2013 12:50
    • Marqué comme réponse sarraarfaoui lundi 9 septembre 2013 08:05
    mercredi 4 septembre 2013 10:04
  • Bonjour,

    Pressez F11 pour exécuter le code en pas à pas. Vous devriez voir que la condition n'est jamais vraie car listBox2.Items est une collection et la méthode ToString() ne pouvant pas spécialement représenter cette collection sous une forme pertinente sort juste le type de cet objet.

    Pour l'instant je ne vois pas trop comment corriger car je dois admettre ne pas comprendre le but de ce test (peut-être en testant chaque item à l'intérieur de la boucle ?). Que cherchez-vous à vérifier avec test ? (


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 5 septembre 2013 20:12
    Modérateur
  • Bonjour,

    string sourceDirectory = path; ne compile pas. Avez-vous oublié un S à paths ?

    Vous utilisez une boucle Foreach dans

    foreach (string item in listBox2.Items)

    et vous n'utilisez pas le mot item.

    De ce que je comprends, vous voulez avoir une listbox contenant des noms de fichiers et un

    répertoire de départ et parcourir les fichiers de ce répertoire de départ et si un fichier est

    dans la listbox alors on le copie dans le répertoire "untreated file". Est-ce exact ?

    Si c'est le cas voici un exemple:

    namespace ArchivedFiles
    {
        using System;
        using System.Windows.Forms;
        using System.IO;
    
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                // on ajoute des fichiers dans la listbox2
                listBox2.Items.Add("test1.txt");
                listBox2.Items.Add("test2.txt");
                listBox2.Items.Add("test3.txt");
            }
    
            private void buttonArchive2_Click(object sender, EventArgs e)
            {
                string cheminDepart = textBox1.Text;
                if (string.IsNullOrEmpty(cheminDepart))
                {
                    MessageBox.Show(@"répertoire inexistant");
                    return;
                }
    
                string repertoireArchive = cheminDepart + "\\untreated file";
                if (!Directory.Exists(repertoireArchive)) //Si le dossier n'existe pas 
                {
                    Directory.CreateDirectory(repertoireArchive); //On le crée
                }
    
                string sourceDirectory = cheminDepart;
                string archiveDirectory = repertoireArchive;
                foreach (var item in listBox2.Items)
                {
                    foreach (var fichier in Directory.GetFiles(sourceDirectory))
                    {
                        string fileName = Path.GetFileName(fichier);
                        if (item.ToString() == fileName)
                        {
                            File.Copy(Path.Combine(sourceDirectory, fileName), Path.Combine(archiveDirectory, fileName));
                        }
                    }
                }
            }
        }
    }


    Apprenez à développer en C#

    fred


    • Modifié fred75 dimanche 8 septembre 2013 14:27
    dimanche 8 septembre 2013 14:12