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,
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,
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.
pour msvc tu peut utiliser la fonction MoveFile
sinon
pour windows:
system("xcopy file1 file2");
pour linux:
system("mv file1 file2");
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.
ou plus simplement :
system(mv"fichier1 fichier2");
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
La fonction rename change le nom du fichier mais ne le deplace pas![]()
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.
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
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
Je re pour trancher entre vous.
Deja merci pour vos reponse, j'ai trouvé.
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
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 super bien, sans chemin absolu ni rien du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #include <cstdio> int moved = rename("file1", "../dir1/file1");
Voila voila,
++ et encore merci
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 !![]()
Non effectivement, j'ai parlé un peu vite.Par contre, le copy_file ou rename de boost prend en paramètre un path :
qui peut avoir un string comme paramètre grâce au constructeur implicte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void copy_file( const path & source_file, const path & target_file );
On s'affranchit donc du c_str().
Code : Sélectionner tout - Visualiser dans une fenêtre à part path( const std::string & src );
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
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![]()
Résolu ?
Partager