组成
大小共4MB,其中1MB用于存储编译后的代码,3MB用于存储其他文件。其他文件包含用户自定义文件和系统文件。
代码操作
函数库
#include <FS.h>
格式化文件系统和启动
SPIFFS.format();
SPIFFS.begin()
定义文件路径和名称
//文件位置和名称
String file_name= "/mark/mark.txt";
open第二个参数为文件模式
- w 写入模式
- r 读文件模式
- a 追加写入模式
File myDataFile=SPIFFS.open(file_name,"w");
文件文件夹操作
- 判断文件是否存在
SPIFFS.exists(myDataFile)
- 打开文件夹
String folder = '/mark'
Dir dir = SPIFFS.openDir(folder);
- 遍历文件夹
while (dir.next()) { // dir.next()用于检查目录中是否还有“下一个文件”
Serial.println(dir.fileName()); // 输出文件名
}
- 删除文件
SPIFFS.remove(file_name)
案例
#include <FS.h>
//文件位置和名称
String file_name= "mark/mark.txt";
void setup(){
Serial.begin(115200);
Serial.println("");
Serial.println("SPIFFS format start");
//格式化SPIFFS
SPIFFS.format();
Serial.println("SPIFFS format finish");
if (SPIFFS.begin())
{
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
File myDataFile=SPIFFS.open(file_name,"w");
//向文件中写入一句话
myDataFile.println("Hello IOT World.");
myDataFile.close(); // 完成文件写入后关闭文件
Serial.println("Finished Writing data to SPIFFS");
}
void loop() {
File myDataFile=SPIFFS.open(file_name,"r");
for (int i = 0; i < myDataFile.size(); i++)
{
Serial.print((char)myDataFile.read());
}
Serial.println("");
myDataFile.close();
File myDataFile2=SPIFFS.open(file_name,"a");
myDataFile2.println("追加");
myDataFile2.close();
delay(10000);
}
最终效果循环追加
补充
查看文件系统相关信息
首先定义一个全局变量(定义啥scope都可以其实)
FSInfo fs_info;
闪存文件系统信息加载到对象里面(其实就是个赋值)
SPIFFS.info(fs_info);
读取对象中的信息
// 可用空间总和(单位:字节)
Serial.print(fs_info.totalBytes);
// 已用空间(单位:字节)
Serial.print(fs_info.usedBytes);
// 最大文件名字符限制(含路径和'\0')
Serial.println(fs_info.maxPathLength);
// 最多允许打开文件数量
Serial.println(fs_info.maxOpenFiles);
// 存储块大小
Serial.println(fs_info.blockSize);
// 存储页大小
Serial.println(fs_info.pageSize);