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 :

rapatriement ou copie de fichiers d'une SD


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut rapatriement ou copie de fichiers d'une SD
    Bonjour,

    J'ai des fichiers qui se trouvent dans ma carte SD ( la SD se trouve dans un automate) et j'aimerai tous les rapatrier dans un dossier sur mon ordi. J'arrive à récupérer 1 ou une dizaine (en utilisant un CASE) de fichiers et en créant un autre fichier (dans mon ordi) ou les données sont copiés.
    Moi je veux copier ou rapatrier tous les fichiers se trouvant dans un dossier (excel1 dans mon programme) sur ma SD et qu'il garde le mm nom une fois dans un dossier de mon ordi
    J'ai essayer avec copyfile et d'autre truc mais rien sans succés. Ci dessous mon programme. Aidez moi svp
    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
     SD.Folder excel1 = plc.SD.Dir(SD.SdFolder.EXCEL_EXCEL1,".csv", false, null);
                int i;
     
                  for (i = 0; i < excel1.Files.Count; i++)
                  {
                   // cette ligne me permet d'accéder au dossier se trouvant sur le SD et de copier les données du 1er fichier.csv dans rapatriement ou copie de fichiers d'une SD
                    var tt = plc.SD.ReadFile(SD.SdFolder.EXCEL_EXCEL1, excel1.Files[0].Name, new ProgressStatusChangedDelegate(status_changed));
                    nom = excel1.Files[i].Name;
                                try
                                {
     
                                    System.IO.File.WriteAllBytes(@"C:\Documents and Settings\récup\02récup02.csv", tt);
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message);
     
                                }
                   }

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    faudrait peut-etre modifier le nom du fichier sur le PC ?

    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
    for (i = 0; i < excel1.Files.Count; i++)
                  {
                   // cette ligne me permet d'accéder au dossier se trouvant sur le SD et de copier les données du 1er fichier.csv dans rapatriement ou copie de fichiers d'une SD
                    var tt = plc.SD.ReadFile(SD.SdFolder.EXCEL_EXCEL1, excel1.Files[0].Name, new ProgressStatusChangedDelegate(status_changed));
                    nom = excel1.Files[i].Name;
                                try
                                {
     
                                    System.IO.File.WriteAllBytes(@"C:\Documents and Settings\mhocine\Mes documents\Stage Amadou\récup\" + nom + ".csv", tt);
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message);
     
                                }
                   }
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Si avec votre modif sa marche, je ne comprend pas pourquoi je n'arrive pas à le faire juste en affichant le nom des fichiers sur la SD sur une listBox pour pouvoir sélectionner ce que je veux mettre sur mon ordi?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Holla, Une explication svp!!!!!
    TheMonz????

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    il faudrait voir le code de remplissage de la listbox..

    est-ce que le chemin est valide ? quel code est utilisé une fois la sélection effectuée ? etc...

    Moi, je n'ai pas de boule de cristal !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    loll, il me dit qu'il y a une rreur sur le chemin, pour le moment je n'est pas encore prie en compte l'idée de sélection, je veux juste les afficher sur le ListBox, la sélection c'est après.
    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
     var tt = plc.SD.ReadFile(SD.SdFolder.EXCEL_EXCEL1, excel1.Files[i].Name, new ProgressStatusChangedDelegate(status_changed));
                    nom = excel1.Files[i].Name;
                    tst = excel1.Files[i].Name;
     
                    try
                    {
     
                        DirectoryInfo dinfo = new DirectoryInfo(nom);
                        FileInfo[] Files = dinfo.GetFiles("*.CSV");
                        foreach (FileInfo file in Files)
                        {
                            listBox1.Items.Add(tt);
                        }
     
                        //récupère tous les fichiers dans excel1
                        System.IO.File.WriteAllBytes(@"C:\Documents and Settings\mhocine\récup\" + nom + ".csv", tt);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);//
                        
                    }
                 }

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    euh, ton code, il est un peu couillon aussi mon garçon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     FileInfo[] Files = dinfo.GetFiles("*.CSV");
                        foreach (FileInfo file in Files)
                        {
    //                        listBox1.Items.Add(tt);
     
    // remplace par :
     
    listbox1.Items.Add(file.Name); // (ou une autre propriété)...
                        }
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    MDR
    Bref toujours la meme erreur: Impossible de trouver une partie du chemin d'accès 'C:\Documents and Settings\mhocine\Programmes\SD Upload2\SD Upload\SD Upload\bin\Debug\02.CSV\'.
    et c'est sur cette ligne, ils disent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInfo[] Files = dinfo.GetFiles("*.CSV");

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    parce que ton directoryInfo n'est pas valide...

    Tu veux utiliser DirectoryInfo avec un nom de fichier alors qu'il faut passer un chemin... c'est surement pour celà que ça plante.

    Et tu sais que mettre un point d'arrêt sur la ligne qui plante permet de regarder avec l'espion express ce que contiennent les objets.. c'est souvent très utile
    pour se rendre compte que l'objet que l'on va utiliser à un souci
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    J'avais mis un point d'arret à ce niveau depuis hier, mais je pensais que c'était pas vraiment le problème
    Et concernant le chemin, le seul moyen que j'ai c'est d'utiliser ma variable tt mais le problème est que ce dernier est un bytes. J'ai mm essayer de le convertir mais sans succés

  11. #11
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    le foreach est surement à faire sur :

    l'objet : excel1.Files qui contient, d'après ton code un tableau de nom de fichier se trouvant dans ton répertoire.
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    l'objet : excel1.Files qui contient, d'après ton code un tableau de nom de fichier se trouvant dans ton répertoire.
    Il ne se trouve pas dans mon répertoire mais dans la carte SD.
    en le faisant ça:ERREUR SUR FOREACH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (FileInfo file in excel1.Files)
                    {
                        listBox1.Items.Add(file.Name); // (ou une autre propriété)...
                    }
    Erreur 1 Impossible de convertir le type 'Unitronics.ComDriver.SD.File' en 'System.IO.FileInfo' C:\Documents and Settings\mhocine\Mes documents\Stage Amadou\Programmes\SD Upload2\SD Upload\SD Upload\Form1.cs 61 17 SD Upload

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    En remplaçant excel1.Files[i].Name par juste excel1.Files[i], je pense avoir le chemin vue qu'il ne m'indique pas d'erreur
    sa affiche bien dans la listBox,mais au moment de moment de faire la copie avec mon bouton, il disent qu'ils attendent un string dans le foreach, du coup problème avec item (erreur : impossible d'effectuer le caste d'un File en System.String)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string destinationfolder = @"C:\Documents and Settings\mhocine\Docs";
               foreach (string item in listBox1.SelectedItems)
               {
                   FileInfo fileInfo = new FileInfo(item);
                   string destinationPath = Path.Combine(destinationfolder, fileInfo.Name);
                   File.Copy(item, destinationPath);
               }

  14. #14
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Il faut mettre le chemin complet quand tu remplis la listbox comme ça, tu n'auras pas à faire de création de FileInfo pour rien dans le select !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Il faut mettre le chemin complet quand tu remplis la listbox comme ça
    c'est à dire?
    En plus le ils disent que le problème est avec item (erreur : impossible d'effectuer le caste d'un File en System.String)
    Si tu me dis pas de Fileinfo donc path pour la destination, d'accord mais problème sera toujours au niveau de l'item

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Je me suis rendu compte que la fonction File.Copy ne marchera pas parce que ma dll ne fonctionne pas avec les instructions Windows.

    Donc j'ai repris mon programme, mais j'ai un bug que ne comprend pas trop. L'erreur est dans cette ligne du programme: var tt = plc.SD.ReadFile(SD.SdFolder.EXCEL_EXCEL1, newitem, new ProgressStatusChangedDelegate(status_changed));

    et me dit que La référence d'objet n'est pas définie à une instance d'un objet.
    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
    private void Déplacer_Click(object sender, EventArgs e)
           {
                   //listBox1.Items.Add(nom);
                   //newitem = listBox1.GetItemText(listBox1.SelectedItem);
                   foreach (var item in listBox1.SelectedItems)
                   {
                      newitem = listBox1.GetItemText(listBox1.SelectedItem);
     
                      var tt = plc.SD.ReadFile(SD.SdFolder.EXCEL_EXCEL1, newitem, new ProgressStatusChangedDelegate(status_changed));
                      try
                      {
                          //récupère tous les fichiers dans excel1
                         System.IO.File.WriteAllBytes(@"C:\Documents and Settings\mhocine\Mes documents\" + nom + ".csv", tt);
     
                      }
                      catch (Exception ex)
                      {
                          MessageBox.Show(ex.Message);
                      }
                   }
     
            }

Discussions similaires

  1. Java- SCP copie de fichier sur une machine distante
    Par yoruichiy dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 17/08/2011, 23h02
  2. [Batch] Copie de fichier contenant une chaine de caractère
    Par norac dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 15/07/2010, 14h38
  3. Copie des fichiers vers une Tape (cassette de sauvegarde)
    Par MedNaceur dans le forum Windows
    Réponses: 0
    Dernier message: 19/03/2010, 14h43
  4. copie de fichiers depuis une hierarchie de dossiers
    Par marsupcs dans le forum Administration système
    Réponses: 2
    Dernier message: 22/10/2009, 23h05
  5. Copie de fichiers sur une liste de PC
    Par azerty987654 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/11/2008, 13h10

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