二进制文件复制可通过多种编程语言实现,以下是主要方法及示例:
一、Python实现
使用`shutil.copyfile`函数 简单高效,直接复制源文件到目标文件,适用于小文件场景。
```python
import shutil
source_file = 'source_file.bin'
destination_file = 'destination_file.bin'
shutil.copyfile(source_file, destination_file)
print('二进制文件复制完成')
```
使用`open`函数与二进制模式
通过`rb`读取源文件,`wb`写入目标文件,支持大文件复制,但效率较低。
```python
with open('source_file.bin', 'rb') as src, open('destination_file.bin', 'wb') as dest:
dest.write(src.read())
```
二、C语言实现
使用`fread`和`fwrite`函数
逐块读取源文件并写入目标文件,效率较高,但需注意缓冲区大小限制。
```c
include
include
int main() {
FILE *source, *destination;
char buffer;
size_t bytesRead;
source = fopen("source_file.bin", "rb");
destination = fopen("destination_file.bin", "wb");
while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) {
fwrite(buffer, 1, bytesRead, destination);
}
fclose(source);
fclose(destination);
return 0;
}
```
使用`stat`函数优化
通过获取文件大小一次性分配缓冲区,减少内存分配次数,提升效率。
```c
include
include
include
int main() {
struct stat st;
char *buffer = malloc(stat("source_file.bin").st_size);
FILE *source = fopen("source_file.bin", "rb");
FILE *destination = fopen("destination_file.bin", "wb");
fread(buffer, 1, st.st_size, source);
fwrite(buffer, 1, st.st_size, destination);
free(buffer);
fclose(source);
fclose(destination);
return 0;
}
```
三、注意事项
文件模式选择:
复制二进制文件需使用二进制模式(如`rb`、`wb`),避免文本模式导致数据损坏。
错误处理:实际应用中应添加文件存在性检查、读写错误处理等逻辑,确保操作可靠性。
以上方法可根据文件大小和性能需求选择,Python适合快速开发,C语言适合底层优化。