抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

1、文件基本操作

ESP8266配有一个闪存,这就像是一个小硬盘,上传的文件就可以存放在这个闪存里,这个闪存简称为 SPIFFS

代码中需要用到头文件<FS.h> 包含的类SPIFFS

下面教你如何打开一个文件并向里面写如信息

  1. 格式化SPIFFS

    1
    SPIFFS.format(); 
  2. 启动SPIFFS

    1
    SPIFFS.begin();   //该函数会返回一个bool型结果,启动成功返回true,否则为false
  3. 用open函数打开一个文件,如果不存在就会创建文件(打开文件->写入数据->关闭文件)

    1
    2
    3
    4
    5
    //以写入的方式打开一个文件,filename为文件路径
    String file_name = "/folder/notes.txt"
    File dataFile = SPIFFS.open(file_name, "w");
    dataFile.println("Hello World"); // 向dataFile写入字符串信息
    dataFile.close(); // 关闭文件

完整code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <FS.h>

void setup(){
Serial.begin(9600);

String filename = "/folder/notes.txt";
SPIFFS.format();
if(SPIFFS.begin()) Serial.println("SPIFFS Started...");
else Serial.println("SPIFFS Failed to Start...");

File f = SPIFFS.open(filename, "w");
f.println("Hello esp8266 world");
f.close();
Serial.println("Finish writing the file...");

}

void loop(){

}

SPIFFS基于文件的基本操作

1
2
3
4
void SPIFFS.format();   //格式化闪存文件系统 【注意:格式化文件系统需要耗费一定时间】

bool SPIFFS.exists(String s); //是否存在文件名为s的文件(准确说s是文件的路径)
bool SPIFFS.remove(String s); //删除文件s,返回是否删除成功
1
2
3
4
5
6
File f = SPIFFS.open(file_name, "r");  //以读的方式打开一个文件

//打印文件中所有内容
for(int i=0; i<f.size(); i++){
Serial.print((char)f.read());
}
1
2
3
4
//以添加信息方式打开一个文件
File f = SPIFFS.open(file_name, "a");
f.println("This is Appended Info."); // 添加字符串信息
f.close(); //关闭文件

注意:不论以何种方式打开文件,最后都要记得关闭文件

基于目录的操作

获取一个目录对象 openDir()

1
2
3
4
5
6
7
String folder_name = "/folder";    //被读取的文件夹
Dir dir = SPIFFS.openDir(folder_name); // 建立“目录”对象

// dir.next()可以看作一个指针,每循环一次就会指向下一个元素
while (dir.next()) {
Serial.println(dir.fileName()); // 输出文件名
}

闪存文件系统的基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FSInfo fs_info;    // 创建一个基本信息的对象

// 写入闪存文件系统信息到fs_info
SPIFFS.info(fs_info);

Serial.print(fs_info.totalBytes); // 可用空间总和(Bytes)
Serial.print(fs_info.usedBytes); // 已经用掉的空间(Bytes)

// 最大文件名字符限制(含路径和'\0')
Serial.println(fs_info.maxPathLength);

// 最多允许打开文件数量
Serial.println(fs_info.maxOpenFiles);

// 存储块大小
Serial.println(fs_info.blockSize);

// 存储页大小
Serial.println(fs_info.pageSize);

2、通过Arduino IDE向闪存文件系统上传文件

看太极创客这篇文章

【注意】
  1. 上传文件前,把【串口监视器】关闭
  2. 之前上传的代码中没有使用格式化,否则刚上传的文件就被格式化删除了

3、使用闪存系统配置功能更丰富的网络服务器

太极创客文章

评论