使用ifstream和ofstream实现文件的复制
时间: 2024-03-08 22:49:28 浏览: 47
可以通过 ifstream 和 ofstream 两个类来实现文件的复制。具体实现步骤如下:
1. 打开原文件和目标文件:
```c++
ifstream in("source.txt", ios::binary); // 打开原文件,以二进制方式读取
ofstream out("target.txt", ios::binary); // 打开目标文件,以二进制方式写入
```
2. 判断文件是否打开成功:
```c++
if (!in.is_open() || !out.is_open()) {
cout << "文件打开失败!" << endl;
return false;
}
```
3. 读取原文件内容并写入目标文件:
```c++
char buffer[1024]; // 缓冲区
int length = 0; // 读取的实际字节数
while (!in.eof()) { // 当未到达文件末尾时循环读取
in.read(buffer, sizeof(buffer)); // 读取数据到缓冲区
length = in.gcount(); // 获取实际读取的字节数
out.write(buffer, length); // 将缓冲区的数据写入目标文件
}
```
4. 关闭文件:
```c++
in.close();
out.close();
```
完整代码如下:
```c++
#include <iostream>
#include <fstream>
using namespace std;
bool copyFile(string sourceFile, string targetFile) {
ifstream in(sourceFile, ios::binary); // 打开原文件,以二进制方式读取
ofstream out(targetFile, ios::binary); // 打开目标文件,以二进制方式写入
if (!in.is_open() || !out.is_open()) {
cout << "文件打开失败!" << endl;
return false;
}
char buffer[1024]; // 缓冲区
int length = 0; // 读取的实际字节数
while (!in.eof()) { // 当未到达文件末尾时循环读取
in.read(buffer, sizeof(buffer)); // 读取数据到缓冲区
length = in.gcount(); // 获取实际读取的字节数
out.write(buffer, length); // 将缓冲区的数据写入目标文件
}
in.close();
out.close();
return true;
}
int main() {
string sourceFile = "source.txt";
string targetFile = "target.txt";
if (copyFile(sourceFile, targetFile)) {
cout << "文件复制成功!" << endl;
}
return 0;
}
```
阅读全文