2015-04-02 28 views
1

我正在研究一个简单的程序,使用C++将文件夹中的所有文件从一个驱动器复制到另一个驱动器。使用Windows API函数CopyFile()。我已经使用了以下代码:在Windows 7上用C++复制文件夹的最佳方法

#include <iostream> 
#include <windows.h> 

int main() 
{ 
    std::cout << "File Copier Version 1"; 

    CopyFile("U:\\whateverfile.file","U:\\whateverfile2.file",0); 

    return 0; 
} 

处理复制整个目录及其中所有文件的最佳方法是什么?有关于此的任何其他建议?我可能遇到的问题?

+1

创建新的目录。使用FindFirstFile/FindNextFile遍历源目录中的文件,复制找到的每个文件。 – 2015-04-02 17:14:02

+0

FindFirstFile的文档具有列出文件的[链接到示例](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200%28v=vs.85%29.aspx)在一个目录中。您可以修改它来复制而不是打印每个文件。若要移动目录,请参阅[这里](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365245%28v=vs.85%29.aspx)。 – 2015-04-02 17:24:59

回答

3

如果您希望在具有进度显示功能和其他功能的Windows上执行此操作,请不要过多地费力,请查阅IFileOperation::CopyItem。但是,它需要Vista或更高版本。

+2

+1。对于Vista之前,还有SHFileOperation。通过使用FileFirstFile/FindNextFile执行自己的循环来使用这两者中的任何一个的优点在于,它可以为您节省大量细节,如适当的Unicode支持,交叉点等。如果您愿意,它们甚至可以提供UI和取消按钮。 – 2015-04-03 01:02:28

相关问题