在C++中,你可以使用std::filesystem
庫來同步文件夾。以下是一個簡單的示例,展示了如何使用std::filesystem::copy_all
函數來同步兩個文件夾:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
void sync_folders(const fs::path& src, const fs::path& dest) {
try {
// 確保目標路徑存在
if (!fs::exists(dest)) {
fs::create_directory(dest);
}
// 復制所有文件和子目錄
fs::copy_all(src, dest, fs::copy_options::skip_permission_denied);
std::cout << "Folders synced successfully!" << std::endl;
} catch (const fs::filesystem_error& e) {
std::cerr << "Error syncing folders: " << e.what() << std::endl;
}
}
int main() {
fs::path src_folder = "path/to/source/folder";
fs::path dest_folder = "path/to/destination/folder";
sync_folders(src_folder, dest_folder);
return 0;
}
在這個示例中,sync_folders
函數接受兩個std::filesystem::path
對象作為參數,分別表示源文件夾和目標文件夾。函數首先檢查目標文件夾是否存在,如果不存在則創建它。然后,使用fs::copy_all
函數復制源文件夾中的所有文件和子目錄。fs::copy_options::skip_permission_denied
選項用于跳過因權限不足而無法復制的文件。
請注意,這個示例僅適用于同步文件夾中的文件和子目錄,而不涉及刪除目標文件夾中不存在于源文件夾的文件。如果你需要這種功能,你可能需要編寫更復雜的邏輯來處理這些情況。