2010-03-29 74 views
4

我想將目錄從一個驅動器複製到另一個驅動器。 我選擇的目錄包含許多子目錄和文件。 我該如何實現相同的使用vC++文件夾副本VC++

+0

如果您需要便攜式解決方案或SHFileOperation(nobugz的回覆)以獲得最佳平臺集成,我會推薦boost(nabulke的回覆) - 它爲您提供基本上與explorer相同的「副本」。 – peterchen 2010-03-29 07:54:13

回答

5

SHFileOperation() API函數是用於複製文件的主力作用。它支持遞歸目錄。查看SHFILEOPSTRUCT結構中可用的選項來控制副本。

+0

SHFileOperation在Windows Vista +上正式棄用,它的刪除功能非正式「在Vista +上不行」。 – 2010-03-29 08:15:49

+0

感謝您的寶貴幫助.. 其工作正常 – Sijith 2010-03-29 08:18:04

+1

它* *不被棄用。 Vista只有另一個捕鼠器來做到這一點。 – 2010-03-29 08:28:17

0

困難的方式。單獨複製每個文件。

使用FindFirst()FindNext()遍歷目錄 使用SetCurrentDirectory()的內容出入目錄
使用CreateDirectory()以創建新的文件夾樹
最後,使用CopyFile()複製的實際文件

-1

如果你有機會到Boost庫,這是你的朋友:

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

使用文件系統迭代器檢查教程以獲得很好的示例。

爲了讓你開始:

#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:評論爲什麼這是downvoted將是有用的 – nabulke 2014-01-20 12:33:47