基于c++完成对一个文件的备份操作:将输入的一个文件复制到三个文件夹中
时间: 2024-09-07 16:05:27 浏览: 50
c++ 解压zip文件到指定文件夹
4星 · 用户满意度95%
要基于 C++ 完成对一个文件的备份操作并将其复制到三个文件夹中,你可以使用 `std::ifstream` 和 `std::ofstream` 来读取源文件的内容,然后写入到三个不同的目标文件夹中。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
// 假设我们有三个文件夹路径(实际应用中应从配置或用户输入获取)
const std::string folder1 = "path_to_folder1";
const std::string folder2 = "path_to_folder2";
const std::string folder3 = "path_to_folder3";
void backupFile(const std::string& sourceFilePath) {
// 检查文件是否存在
if (!std::filesystem::exists(sourceFilePath)) {
std::cerr << "Source file does not exist." << std::endl;
return;
}
// 创建目标文件名
std::string backupFileName = "backup_of_" + std::filesystem::path(sourceFilePath).filename();
try {
// 读取源文件
std::ifstream srcFile(sourceFilePath, std::ios::binary);
if (!srcFile) {
std::cerr << "Error opening the source file for reading." << std::endl;
return;
}
// 写入文件夹1
std::ofstream dstFile(folder1 + "/" + backupFileName, std::ios::binary);
if (!dstFile) {
std::cerr << "Error creating a file in folder1." << std::endl;
return;
}
dstFile << srcFile.rdbuf(); // 将源文件内容写入
// 写入文件夹2
dstFile.close();
dstFile.open(folder2 + "/" + backupFileName, std::ios::binary);
dstFile << srcFile.rdbuf();
// 写入文件夹3
dstFile.close();
dstFile.open(folder3 + "/" + backupFileName, std::ios::binary);
dstFile << srcFile.rdbuf();
srcFile.close();
dstFile.close();
std::cout << "Backup completed successfully!" << std::endl;
} catch (const std::exception& e) {
std::cerr << "An error occurred during backup: " << e.what() << std::endl;
}
}
int main() {
// 传递源文件路径给 backupFile 函数
const std::string sourceFilePath = "path_to_your_file"; // 替换为实际的文件路径
backupFile(sourceFilePath);
return 0;
}
```
确保在运行此程序之前,所有目标文件夹已经存在并且有足够的权限写入。如果你计划让用户选择源文件或者设置多个备份目的地,那么你需要提供一个界面让用户输入这些信息。
阅读全文