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 :

Déplacer un fichier d'une dossier à un autre?


Sujet :

C++

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut Déplacer un fichier d'une dossier à un autre?
    Bonjour,

    je voudrais savoir comment je peux deplacer un fichier d'un dossier à un autre :

    Dans mon cas : depalcer 'file1.txt' de 'dossier1' à '../dossier2'.

    Je travail sous cygwin et je compile avec gcc (mingw).

    merci,

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    J'ignore s'il existe une fonction C++ pour ça, mais tu peux utiliser la fonction C rename(), déclarée dans <cstdio>.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    pour msvc tu peut utiliser la fonction MoveFile
    sinon
    pour windows:
    system("xcopy file1 file2");
    pour linux:
    system("mv file1 file2");

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    rename() est plus portable, et fait partie du standard.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #if defined(_WIN32)
    #  define mv "xcopy "
    #endif
    #if defined(LINUX)
    #  define mv "mv "
    #endif
    system(mv"fichier1 fichier2");

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    La fonction rename change le nom du fichier mais ne le deplace pas

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Si, elle le déplace, il suffit de lui passer deux chemins absolus différents.
    Et ce, aussi bien sous POSIX que sous Windows.

    Par contre, sous la plupart des implémentations, le répertoire de destination doit exister.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Avec Boost.filesystem, il a y copy_file !
    C'est portable, et facile à utiliser !

    http://www.boost.org/libs/filesystem...system-library

    Il y a aussi bien sur un tuto de Miles là dessus ICI

    Bonne continuation,

    Poukill

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include<boost/filesystem/operations.hpp>
    #include<iostream>
    #include<string>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    boost::filesystem::copy_file(string,string)//copie d'un fichier
    boost::filesystem::rename(string,string)//renommer et deplacer

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Je re pour trancher entre vous .

    Deja merci pour vos reponse, j'ai trouvé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #if defined(_WIN32)
    #  define mv "xcopy "
    #endif
    #if defined(LINUX)
    #  define mv "mv "
    #endif
    system(mv"fichier1 fichier2");
    marche en effet, mais a chaque fois l'OS demande si c'est un fichier ou un dossier.... Pas du tout pratique pour l'usage que je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <cstdio>
    int moved = rename("file1", "../dir1/file1");
    marche super bien, sans chemin absolu ni rien du tout.

    Voila voila,

    ++ et encore merci

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Perso je trouve la solution de boost beaucoup plus propre, mais si ta façon de faire te va, alors tout le monde est content !

  12. #12
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par mr_samurai Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <cstdio>
    int moved = rename("file1", "../dir1/file1");
    C'est pas sale poukill, si ?

  13. #13
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Non effectivement, j'ai parlé un peu vite. Par contre, le copy_file ou rename de boost prend en paramètre un path :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void copy_file( const path & source_file,
                    const path & target_file );
    qui peut avoir un string comme paramètre grâce au constructeur implicte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    path( const std::string & src );
    On s'affranchit donc du c_str().

    Surtout, une demande ne venant jamais seule, mieux vaut utiliser les filsystem de boost, si un jour il veut faire plus qu'une simple copie !

    Poukill

  14. #14
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    En fait, mon programme est juste un prototype destiné à etre réécrit si la solution est adoptée par la suite. Donc, si le programme marche sur ma machine je serai largement satisfait

  15. #15
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Résolu ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Déplacer fichier d'un dossier à un autre
    Par math11 dans le forum Langage
    Réponses: 10
    Dernier message: 18/06/2012, 18h38
  2. FILESTREAM : Déplacer un fichier d'une table à une autre
    Par StringBuilder dans le forum Développement
    Réponses: 3
    Dernier message: 30/12/2011, 13h07
  3. Déplacer les fichiers d'une instance
    Par jsd03 dans le forum Administration
    Réponses: 3
    Dernier message: 26/05/2009, 08h29
  4. Copier/coller des fichiers d'un dossier à un autre.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/01/2009, 09h00
  5. déplacement fichiers d'un dossier à un autre + condition?
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/03/2008, 18h50

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