ESP8266闪存文件系统概述
上一篇文章,我们已系统学习了ESP8266在网络服务器方面的学习,本文将围绕该开发板内部的闪存文件系统展开。
闪存文件系统
闪存文件系统(通常是 SPIFFS)是一种轻量级的文件系统,用于在闪存中存储和管理文件
优点
① 轻量级: 占用资源少,适合 ESP8266 等资源有限的设备。
② 磨损均衡: 通过均衡写入操作,延长闪存寿命。
③ 断电保护: 确保文件系统在意外断电时的完整性。
④ 支持文件和目录: 虽然 SPIFFS 是一个扁平文件系统,但可以通过路径模拟目录结构。
用途
① 存储网页文件: 用于 Web 服务器,存储 HTML、CSS、JavaScript 等文件。
② 存储配置文件: 保存设备的配置参数(如 Wi-Fi 密码、传感器校准数据等)。
③ 存储日志文件: 记录设备运行日志。
④ 存储其他数据: 如图片、音频等小型文件。
结构
① 扁平文件系统: SPIFFS 是一个扁平文件系统,所有文件都存储在一个列表中,路径中的 / 只是文件名的一部分。
② 路径模拟目录: SPIFFS 不支持真正的目录结构,但可以通过路径分隔符 / 模拟目录。例如,/data/config.txt 表示一个文件。
注意事项
① 闪存寿命: 闪存的写入次数有限(通常为 10 万次),频繁写入会缩短闪存寿命。建议优化写入操作,避免频繁写入。
② 文件系统损坏: 意外断电可能导致文件系统损坏。建议定期备份重要数据。
③ 空间管理: SPIFFS 的空间有限(通常为 1MB~3MB),需合理管理文件大小和数量。
④ 在 Arduino IDE 中,需要通过选择开发板型号和 Flash 大小来配置 SPIFFS 分区,否则会无法上传文件,如下图所示:
设置 Flash 大小为 4MB (FS:3MB OTA:~512KB)

FS库
FS.h 是 ESP8266 中用于操作文件系统的一个头文件,它提供了对 SPIFFS(Serial Peripheral Interface Flash File System)文件系统的支持。通过 FS.h,开发者可以方便地在 ESP8266 的闪存中创建、读取、写入和删除文件。
① FS
FS 类是文件系统的基类,提供了文件系统的通用操作,SPIFFS是该类配置的一个全局对象,编写程序时可以直接使用该对象操作。
重要方法:
begin(): 初始化文件系统format(): 格式化文件系统,清除内部已有的所有文件open(const char* path, const char* mode): 打开一个文件,分为"r"只读、"w"只写、"a"追加等exists(const char* path): 检查文件或目录是否存在remove(const char* path): 删除指定文件。mkdir(const char* path): 在指定目录下创建目录(SPIFFS 不支持真正的目录,此方法仅用于兼容性)rmdir(const char* path): 删除目录(SPIFFS 不支持真正的目录,此方法仅用于兼容性)openDir(const String& path): 用于遍历以path开头的文件,返回以这些组成的Dir对象
② File
File类是一个文件类,用于表示一个文件或目录。
available(): 检查文件中是否还有可读取的数据,若有则返回可读字节数read(): 读取文件中的一个字节,读取失败返回-1write(uint8_t data): 向文件中写入一个字节print() / println(const String &data): 向文件中写入字符串或数据close(): 关闭文件,通常在操作文件后使用name(): 获取文件名size(): 获取文件大小
③ Dir
Dir是一个目录类,用于遍历目录中的文件
next(): 移动到下一个文件fileName(): 获取当前文件的名称,返回文件名称fileSize(): 获取当前文件的大小isDirectory(): 判断当前文件是否为目录
闪存文件系统实例
① 写入信息(w)
#include <FS.h>
String file_name = "notes.txt"; //被读取的文件位置和名称
void setup() {
Serial.begin(9600);
Serial.println("");
// 先格式化再写入信息
Serial.println("SPIFFS format start");
SPIFFS.format(); // 格式化SPIFFS
Serial.println("SPIFFS format finish");
if(SPIFFS.begin()){
// 启动SPIFFS
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
File dat

最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



