You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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() {
}

关键说明

  1. API变更原因:ESP8266 Arduino库3.x版本重构了文件系统API,将容量信息的获取统一到FSInfo结构体中,不再提供直接的成员函数调用。你看到的ESP32文档中的方法不适用于ESP8266的新版本库。
  2. 挂载前置条件:必须先调用begin()成功挂载文件系统,否则info()方法会返回失败。
  3. 数据类型注意:不要用int存储容量值,fsInfo.totalBytes和fsInfo.usedBytes的类型是size_t(无符号整数),可以直接使用,避免溢出问题。
  4. 文件系统推荐:SPIFFS已被官方标记为弃用,LittleFS在性能、可靠性和碎片管理上更优,建议优先使用。

内容的提问来源于stack exchange,提问作者Zaby1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:45:52