LittleFs是否支持二进制文件读写?能否类似C的fopen用rb/wb模式?
LittleFs 二进制文件读写支持说明
LittleFs 原生支持二进制文件的读写操作,它的文件I/O设计本身就是以二进制模式为默认行为,不需要像C语言fopen那样额外指定rb/wb这类模式标志。
核心逻辑
C语言中r与rb、w与wb的区别在于是否处理换行符(文本模式会自动转换换行符格式,二进制模式则原样读写),但LittleFs的文件系统没有区分文本/二进制模式的逻辑——所有文件操作都是直接按字节流处理,写入的字节会原封不动存储,读取时也会原样返回,不存在任何字符转换操作。
你的用法完全正确
你尝试的LFS_O_WRONLY | LFS_O_CREAT写入、LFS_O_RDONLY读取的方式,和C语言里用wb/rb模式操作二进制文件的效果完全一致。举个实际代码示例:
写入二进制数据
#include "lfs.h" uint8_t sample_bin[] = {0x12, 0x34, 0x56, 0x78, 0x90}; struct lfs_file file; struct lfs_config lfs_cfg; // 假设已完成LittleFs配置初始化 // 打开文件并写入二进制数据 int err = lfs_file_open(&lfs, &file, "data.bin", LFS_O_WRONLY | LFS_O_CREAT); if (err == 0) { lfs_file_write(&lfs, &file, sample_bin, sizeof(sample_bin)); lfs_file_close(&lfs, &file); }
读取二进制数据
uint8_t read_buf[5] = {0}; int err = lfs_file_open(&lfs, &file, "data.bin", LFS_O_RDONLY); if (err == 0) { lfs_file_read(&lfs, &file, read_buf, sizeof(read_buf)); lfs_file_close(&lfs, &file); } // read_buf将得到与写入时完全一致的{0x12, 0x34, 0x56, 0x78, 0x90}
总结
不需要额外设置任何标志来启用二进制模式,LittleFs的所有文件读写操作默认就是二进制形式,你当前的用法完全符合需求,可以正常使用。
内容的提问来源于stack exchange,提问作者Wildptr
相关产品推荐
相关产品推荐

