读写二进制文件是计算机编程中的基础操作,以下是具体方法及示例:
一、Python中的二进制文件读写
打开文件 - 读取模式:`'rb'`(二进制读取)
- 写入模式:`'wb'`(二进制写入)
- 追加模式:`'ab'`(二进制追加)
```python
读取文件
with open('example.bin', 'rb') as file:
content = file.read()
print(content)
写入文件
with open('example.bin', 'wb') as file:
file.write(b'x00x01x02x03')
```
按块读取
- 避免一次性读取大文件导致内存不足,可按固定大小分块读取
```python
chunk_size = 1024
with open('example.bin', 'rb') as file:
while True:
data = file.read(chunk_size)
if not data:
break
print(data)
```
使用上下文管理器
- `with`语句自动管理文件关闭,避免资源泄漏
```python
with open('example.bin', 'rb') as file:
content = file.read()
处理内容
```
二、C语言中的二进制文件读写
基础操作
- 使用`fopen`指定模式(如`"wb"`、`"rb"`)
- 使用`fwrite`写入数据
- 使用`fread`读取数据
```c
写入文件
FILE *file = fopen("example.bin", "wb");
if (file) {
fwrite(&number1, sizeof(Num), 1, file);
fclose(file);
}
// 读取文件
file = fopen("example.bin", "rb");
if (file) {
fread(&number1, sizeof(Num), 1, file);
fclose(file);
}
```
结构体读写
- 可以读写固定格式的二进制结构
```c
struct MyStruct {
float data;
};
// 写入结构体
MyStruct s = {{1.1f, 2.2f, 3.3f}};
fwrite(&s, sizeof(MyStruct), 1, file);
// 读取结构体
MyStruct r;
fread(&r, sizeof(MyStruct), 1, file);
```
三、注意事项
模式选择
- 文本文件使用`'r'`/`'w'`模式,二进制文件必须使用`'b'`前缀(如`'rb'`)
- 追加操作需使用`'a'`模式
数据对齐
- 读写固定结构体时需注意内存对齐,避免数据错位
异常处理
- 操作系统层面需检查文件是否成功打开
- 编程语言层面建议使用`try-catch`(如Python)或检查返回值(如C语言)
四、扩展应用
文件拷贝:
通过循环读取源文件并写入目标文件实现
网络传输:二进制文件适合传输图像、音频等非文本数据
通过以上方法,可灵活处理二进制文件的读写需求。