ESP8266获取Flash文件系统总容量与已用容量报错求助
解决ESP8266获取文件系统容量的API问题
在ESP8266 Arduino库3.x版本中,totalBytes()和usedBytes()这两个直接调用的成员函数已被移除,需要通过fs::FSInfo结构体来获取文件系统的总容量和已用空间,无论使用SPIFFS还是LittleFS都是如此。
正确实现代码
使用LittleFS(官方推荐)
#include <LittleFS.h> void setup() { Serial.begin(115200); // 先挂载LittleFS,失败则输出提示 if (!LittleFS.begin()) { Serial.println("LittleFS挂载失败"); return; } fs::FSInfo fsInfo; // 获取文件系统信息 if (LittleFS.info(fsInfo)) { Serial.print("总容量: "); Serial.println(fsInfo.totalBytes); Serial.print("已用空间: "); Serial.println(fsInfo.usedBytes); } else { Serial.println("获取文件系统信息失败"); } } void loop() { }
使用SPIFFS(已弃用)
#include <SPIFFS.h> void setup() { Serial.begin(115200); if (!SPIFFS.begin()) { Serial.println("SPIFFS挂载失败"); return; } fs::FSInfo fsInfo; if (SPIFFS.info(fsInfo)) { Serial.print("总容量: "); Serial.println(fsInfo.totalBytes); Serial.print("已用空间: "); Serial.println(fsInfo.usedBytes); } else { Serial.println("获取文件系统信息失败"); } } void loop() { }
关键说明
- API变更原因:ESP8266 Arduino库3.x版本重构了文件系统API,将容量信息的获取统一到
FSInfo结构体中,不再提供直接的成员函数调用。你看到的ESP32文档中的方法不适用于ESP8266的新版本库。 - 挂载前置条件:必须先调用
begin()成功挂载文件系统,否则info()方法会返回失败。 - 数据类型注意:不要用
int存储容量值,fsInfo.totalBytes和fsInfo.usedBytes的类型是size_t(无符号整数),可以直接使用,避免溢出问题。 - 文件系统推荐:SPIFFS已被官方标记为弃用,LittleFS在性能、可靠性和碎片管理上更优,建议优先使用。
内容的提问来源于stack exchange,提问作者Zaby1990
相关产品推荐
相关产品推荐

