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, déplacement et suppression d'un fichier en c#


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut Copie, déplacement et suppression d'un fichier en c#
    Bonjour à tous,

    Voici mon problème, après avoir épluché, décortiqué et parcouru nombre de forum, tuto et page MSDN, je n'arrive pas à faire ce que je veux.

    Mon code est le suivant:
    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
                    string FSource, FDestination;
                    string Source = "c:\\MonDossierA";
                    string Destination = "c:\\MonDossierB";
                    string Fichier = "Test.txt";
                    //les variables Source, Destination et Fichier sont normalement récupéré d'une textbox
                    if (Fichier != null && Fichier != "")
                    {
                        FSource = Source + "\\" + Fichier;
                        FDestination = Destination + "\\" + Fichier;
                    }
                    else
                    {
                        FSource = Source;
                        FDestination = Destination;
                    }
     
     
                    if(Copie=="True")
                        File.Copy(FSource, FDestination,false);
                    else
                        File.Move(FSource, FDestination);
    La compilation se passe bien, mais au moment de réaliser la copie, j'ai le message suivant qui apparait (merci au try catch)

    "Could not find file 'c:\MonDossierA\Test.txt'"

    Même soucis avec le déplacement du fichier, et la suppression (basé sur le même principe) ne réalise rien.

    Pouvez vous m'aider?

    Cordialement,

    Garfield

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    question bête : il existe ton fichier "C:\MonDossierA\Test.txt" ?
    Parce que c'est le message de ton erreur quoi ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Par défaut
    Salut,

    Le message laisse supposer que ton fichier n'existe pas.

    Essaie File.Exists

    A+

    [EDIT : Désolé pour la réponse doublon...]

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut
    Salut,

    J'ai oublié de le préciser, mais oui, mon fichier existe. C'est le premier truc que j'ai vérifié.

    P.S Il n'y a pas de question bête à ce qu'il parait .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Par défaut
    re,

    Tu devrais faire des tests d’existence de fichier avec la méthode que je t'ai donnée.

    Cela t'évitera des problèmes lorsque tu manipuleras tes fichiers.

    FSource = Source + "\\" + Fichier;
    FDestination = Destination + "\\" + Fichier;
    Je pense que le "\\" en début de chaîne est suffisant. un simple "\" entre ton répertoire et ton nom devrait suffire.

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Il faut bien les deux backslashes, un seul correspondant au caractère d'échappement le compilo verra pas la fin de la string et va brailler.
    Autre solution c'est de mettre des arobases avant les string, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string monFichier = @"C:\folder\file.txt";
    Sinon j'ai testé ton code tel quel et j'ai aucun souci.
    Au cas où (mais je savais que ça ne changerait rien) j'ai testé avec des casses différentes : ça passe toujours.

    Fais un test File.Exists avec ton path en constante, sans concaténation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show("exists ? : " + File.Exists(@"c:\MonDossierA\qsd.txts").ToString());
    Si ça passe pas ... ben on peut rien pour toi

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut
    J'ai testé les 2 manières d'écrire les liens, avec et sans concaténation. Toujours le même résultat.
    Pourtant, si je prend le lien dans mon code et que je le colle dans mon explorateur, j'ai mon ptit fichier texte qui s'ouvre bien...
    Est-il possible qu'il y ai un caractère de fin de ligne (genre \r ou \n) qui me pose soucis?

    Sinon, bha merci de votre aide ^^

  8. #8
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Ta chaine ne contient pas ce genre de caractères, et pour un Exists le contenu n'est pas lu.
    Il reste la possibilité d'un manque de droits, mais même là j'ai des doutes.
    Tu as créé fichier et répertoires comme dans le code ici, ou c'est juste pour nous donner exemple ?

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut
    A par les lignes 2, 3 et 4, j'ai fais un copier/coller de mon code.
    Je vais me débrouiller autrement. J'ai fais l'équivalent avec les dossiers complet, et ça fonction.

  10. #10
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Citation Envoyé par garfieldlcht Voir le message
    A par les lignes 2, 3 et 4, j'ai fais un copier/coller de mon code.
    Je vais me débrouiller autrement. J'ai fais l'équivalent avec les dossiers complet, et ça fonction.
    Tu veux dire que t'étais en relatif ?!

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Par défaut
    Non, j'étais en absolut.
    J'ai trouvé d'ou venais le problème! Mon fichier à supprimé se nommais test.txt (vue comme ça dans l'explorateur), mais il était vu par le code comme étant test.txt.txt !

  12. #12
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Arf ! tout ce temps perdu pour une petite erreur ...
    Enfin ce qui compte c'est que maintenant ça fonctionne

  13. #13
    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
    Par défaut
    et si tu avais utilisé juste 3 secondes le debuggueur pour regarder la chaine de caractère qu'il cherchait, je pense que tu aurais vu de suite
    cette betise et que les gens sympas du forum se seraient moins investis pour presque rien...

  14. #14
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Bonjour

    Eviter de construire les paths par concaténation de chaine de caractére.

    Utiliser plutôt Path.Combine, ça évite de "dealer" avec les back-slash, etc .....

    Idem pour les extensions : utiliser Path.GetExtension, ChangeExtension, HasExtension ça évite des bugs fumeux comme ici.

    Plus généralement, éviter de manipuler directement les chaines constutives de path fichiers ou répertoires puisque le framwork dispose de toutes les méthodes nécessaire pour cela.

Discussions similaires

  1. [VB.NET] Suppression d'un fichier chargé dans un WebBrowser
    Par Vonotar dans le forum Windows Forms
    Réponses: 9
    Dernier message: 27/09/2004, 11h09
  2. Réponses: 4
    Dernier message: 22/12/2003, 11h12
  3. Réponses: 8
    Dernier message: 14/11/2003, 22h51
  4. Réponses: 2
    Dernier message: 11/08/2003, 13h43
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

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