基于c++完成对一个文件的备份操作:将输入的一个文件复制到三个生成的文件夹中
时间: 2024-09-08 21:01:03 浏览: 35
要在C++中实现一个文件的备份操作,你需要使用`#include <fstream>`库来进行文件操作。以下是一个简单的示例,该示例将输入文件(例如`input.txt`)复制到三个不同的文件夹中:
```cpp
#include <iostream>
#include <filesystem> // C++17引入的新库,用于处理文件路径
// 定义源文件和目标文件夹
std::string sourceFile = "input.txt";
std::string backupFolder1 = "backup1/";
std::string backupFolder2 = "backup2/";
std::string backupFolder3 = "backup3/";
// 检查文件夹是否存在,如果不存在则创建
void createDirectoryIfNotExists(const std::string& dir) {
if (!std::filesystem::exists(dir)) {
try {
std::filesystem::create_directory(dir);
std::cout << "Directory " << dir << " created.\n";
} catch (const std::filesystem::filesystem_error& e) {
std::cerr << "Error creating directory: " << e.what() << '\n';
}
}
}
// 复制文件到指定文件夹
void copyFileToBackup(const std::string& src, const std::string& dst) {
std::ifstream in(src, std::ios::binary);
if (!in) {
throw std::runtime_error("Failed to open input file.");
}
std::ofstream out(dst, std::ios::binary);
if (!out) {
throw std::runtime_error("Failed to open output file.");
}
out << in.rdbuf();
in.close();
out.close();
std::cout << "Copied " << src << " to " << dst << "\n";
}
int main() {
createDirectoryIfNotExists(backupFolder1);
createDirectoryIfNotExists(backupFolder2);
createDirectoryIfNotExists(backupFolder3);
// 复制文件到每个备份文件夹
copyFileToBackup(sourceFile, backupFolder1 + sourceFile);
copyFileToBackup(sourceFile, backupFolder2 + sourceFile);
copyFileToBackup(sourceFile, backupFolder3 + sourceFile);
return 0;
}
```
这个程序首先检查目标文件夹是否存在,如果不存在就创建。然后,它读取输入文件的内容并将其写入到每个备份文件夹中的相应位置。
阅读全文