2010-03-29 9 views
4

Je souhaite copier un répertoire d'un lecteur à un autre. Le répertoire sélectionné contient de nombreux sous-répertoires et fichiers. Comment puis-je mettre en œuvre la même chose en utilisant vC++Copie de dossier VC++

+0

Je recommanderais boost (réponse de nabulke) si vous avez besoin d'une solution portable, ou SHFileOperation (réponse de nobugz) pour une meilleure intégration de la plate-forme - il vous donne essentiellement la même "copie" que l'explorateur. – peterchen

Répondre

5

La fonction API SHFileOperation() est la fonction de cheval de bataille pour la copie des fichiers. Il supporte les répertoires récursifs. Passez en revue les options disponibles dans la structure SHFILEOPSTRUCT pour contrôler la copie.

+0

SHFileOperation est officiellement obsolète sur Windows Vista + et sa fonction de suppression officieusement "ne fonctionne pas" sur Vista +. –

+0

Merci pour votre aide précieuse .. Son fonctionnement bien – Sijith

+1

Il est * pas * obsolète. Vista a simplement une autre souricière pour le faire. –

0

La manière difficile. copier chaque fichier individuellement.

Utilisez FindFirst() et FindNext() itérer sur le contenu d'un répertoire Utilisez SetCurrentDirectory() pour entrer et sortir des répertoires
Utilisez CreateDirectory() pour créer les nouveaux dossiers arbre
et enfin, utiliser CopyFile() pour copier les fichiers réels

-1

Si vous avez accès à la bibliothèque de ce coup de pouce est votre ami:

http://www.boost.org/doc/libs/1_42_0/libs/filesystem/doc/index.htm

Consultez le tutoriel pour de bons exemples en utilisant un itérateur de système de fichiers.

Pour vous aider à démarrer:

#include <iostream> 
#include “boost/filesystem.hpp” 
int main(int argc, char *argv[]) 
    { 
    boost::filesystem::path path1("/usr/local/include"); // your source path 
    boost::filesystem::path::iterator pathI = path1.begin(); 
    while (pathI != path1.end()) 
    { 
    std::cout << *pathI << std::endl; // here you could copy the file or create a directory 
    ++pathI; 
    } 
    return 0; 
    } 
+0

@downvoter: un commentaire pourquoi cela est downvoted serait utile – nabulke

Questions connexes