参考资料:ESP8266闪存文件系统基本操作 – 太极创客

每一个ESP8266都配有一个闪存,这个闪存很像是一个小硬盘,我们上传的文件就被存放在这个闪存里。这个闪存的全称是Serial Peripheral Interface Flash File System(SPIFFS)。

除了可以存放上传的程序以外,我们还可以将网页文件或者系统配置文件存放在ESP8266的闪存中。

🚀需要的头文件

1
2
#include <FS.h>
#include <SPIFFS.h>

🚀格式化闪存系统

1
2
3
Serial.println("SPIFFS format start");
SPIFFS.format(); // 格式化SPIFFS
Serial.println("SPIFFS format finish");

🚀启动闪存文件系统

1
2
3
4
5
if(SPIFFS.begin()){ // 启动闪存文件系统
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}

🚀打印目录中的所有的文件名及文件大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void fileInfo(const char *dirName)
{
File dir = SPIFFS.open(dirName);
Serial.printf("Listing directory: %s\r\n", dirName);

if(!dir){
Serial.println("- failed to open directory");
return;
}

File file = dir.openNextFile();
while(file){
if(file.isDirectory()){
Serial.print(" DIR : ");
Serial.println(file.name());
} else {
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print("\tSIZE: ");
Serial.println(file.size());
}
file = dir.openNextFile();
}
}

🚀将配置文件写入到闪存文件系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
String file_name = "/config.txt";       //配置文件名
void writeConfigFile(char *config)
{
File file = SPIFFS.open(file_name, "w");
if(!file){
Serial.println("- failed to open file for writing");
return;
}

if(file.print(config)){
Serial.println("- file write success");
} else {
Serial.println("- file write failed");
}

// 打印根目录中文件内容以及文件大小
fileInfo("/");

file.close();
}

🚀读取配置文件并存储到相应内存中

1
2
3
4
5
6
7
8
9
10
11
12
String file_name = "/config.txt";       //配置文件名
void readConfigFile(char *config)
{
File file = SPIFFS.open(file_name, "r");
//读取文件内容并且通过串口监视器输出文件信息
for(int i=0; i<file.size(); i++){
config[i] = (char)file.read();
Serial.print(config[i]);
}
Serial.println();
file.close();
}