写入字节到文件 - WriteBytesToFile
函数简介
将内存中的字节流数据写入到指定文件,支持二进制数据写入。
接口名称
WriteBytesToFile
DLL调用
int32_t WriteBytesToFile(int64_t instance, const char* filePath, int64_t dataAddr, int32_t dataSize)
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。filePath(字符串): 目标文件的完整路径dataAddr(长整型数): 要写入的数据在内存中的起始地址dataSize(整型数): 要写入的数据大小(字节)
示例:
// 创建OLA对象
int64_t instance = CreateCOLAPlugInterFace();
// 准备要写入的数据
unsigned char data[] = {0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00};
int32_t dataSize = sizeof(data);
// 写入字节到文件
int32_t result = WriteBytesToFile(
instance,
"C:\\Output\\binary_data.bin",
(int64_t)data,
dataSize
);
if (result == 1) {
printf("成功写入字节到文件\n");
} else {
printf("写入失败\n");
}
// 释放资源
DestroyCOLAPlugInterFace(instance);
高级示例 - 写入图片数据:
// 从截图获取图片数据
int64_t imagePtr = GetScreenDataPtr(instance, 0, 0, 800, 600);
if (imagePtr != 0) {
// 获取图片BMP字节流
int64_t bmpDataPtr = GetImageBmpData(instance, imagePtr);
if (bmpDataPtr != 0) {
// 获取数据大小
int32_t dataSize = GetStringSize(instance, bmpDataPtr);
// 写入到文件
int32_t result = WriteBytesToFile(
instance,
"C:\\Screenshots\\screen.bmp",
bmpDataPtr,
dataSize
);
// 释放内存
FreeMemoryPtr(instance, bmpDataPtr);
}
FreeImagePtr(instance, imagePtr);
}
追加写入示例:
// 先读取现有文件内容
int64_t existingDataPtr = ReadBytesFromFile(instance, "C:\\Data\\log.bin");
if (existingDataPtr != 0) {
int32_t existingSize = GetStringSize(instance, existingDataPtr);
// 准备新数据
unsigned char newData[] = {0x01, 0x02, 0x03, 0x04};
int32_t newSize = sizeof(newData);
// 合并数据
unsigned char* combined = (unsigned char*)malloc(existingSize + newSize);
memcpy(combined, (void*)existingDataPtr, existingSize);
memcpy(combined + existingSize, newData, newSize);
// 写入合并后的数据
WriteBytesToFile(instance, "C:\\Data\\log.bin", (int64_t)combined, existingSize + newSize);
free(combined);
FreeMemoryPtr(instance, existingDataPtr);
}
返回值
整型数:
- 1: 成功
- 0: 失败
注意事项
- 如果文件已存在,将覆盖原有内容
- 如果目录不存在,写入会失败
- 确保有足够的磁盘空间
- 确保对目标路径有写入权限
- dataAddr必须指向有效的内存地址
- dataSize必须与实际数据大小一致,否则可能写入错误数据
- 支持写入任意二进制数据,包括可执行文件、图片、音频等
- 写入大文件时注意性能影响
- 建议在写入前检查文件路径的有效性
- 使用绝对路径可以避免路径解析问题
- 写入系统目录可能需要管理员权限
