2015-04-02 31 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

相關問題