ESP8266闪存文件系统
如果网页比较大,那么只用程序去储存明显是不太可能的,我们可以用esp8266闪存文件系统储存网页。
通常的闪存文件系统大小为4Mb
名称 |
大小 |
|
闪存文件系统 |
4Mb |
|
程序储存 |
1Mb |
|
用户可以文件储存(会包含一些系统文件) |
3Mb |
ESP8266闪存文件系统基本操作
ESP8266闪存文件系统基本操作
1.通过程序向闪存文件系统写入信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#include <FS.h> String file_name = "/taichi-maker/notes.txt"; void setup() { Serial.begin(9600); Serial.println(""); Serial.println("SPIFFS format start"); SPIFFS.format(); Serial.println("SPIFFS format finish"); if(SPIFFS.begin()){ Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } File dataFile = SPIFFS.open(file_name, "w"); dataFile.println("Hello IOT World."); dataFile.close(); Serial.println("Finished Writing data to SPIFFS"); } void loop() { }
|
2.通过程序从闪存文件系统读取信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include <FS.h> String file_name = "/taichi-maker/notes.txt"; void setup() { Serial.begin(9600); Serial.println(""); if(SPIFFS.begin()){ Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } if (SPIFFS.exists(file_name)){ Serial.print(file_name); Serial.println(" FOUND."); } else { Serial.print(file_name); Serial.print(" NOT FOUND."); } File dataFile = SPIFFS.open(file_name, "r"); for(int i=0; i<dataFile.size(); i++){ Serial.print((char)dataFile.read()); } dataFile.close(); } void loop() { }
|
3.通过程序向闪存文件系统文件添加信息
要注意写入操作和添加操作的区别。假设闪存系统中已经有这样一文件,写入操作会对原文件进行覆盖,而添加操作会将文件最后加入新的内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#include <FS.h> String file_name = "/taichi-maker/notes.txt"; void setup() { Serial.begin(9600); Serial.println(""); if(SPIFFS.begin()){ Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } if (SPIFFS.exists(file_name)){ Serial.print(file_name); Serial.println(" FOUND."); File dataFile = SPIFFS.open(file_name, "a"); dataFile.println("This is Appended Info."); dataFile.close(); Serial.println("Finished Appending data to SPIFFS"); } else { Serial.print(file_name); Serial.print(" NOT FOUND."); } } void loop() { }
|
4.通过程序读取目录内容
读取某个文件夹中程序的内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <FS.h> String file_name = "/taichi-maker/myFile.txt"; String folder_name = "/taichi-maker"; void setup() { Serial.begin(9600); Serial.println(""); if(SPIFFS.begin()){ Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } File dataFile = SPIFFS.open(file_name, "w"); dataFile.println("Hello Taichi-Maker."); dataFile.close(); Serial.println(F("Finished Writing data to SPIFFS")); Dir dir = SPIFFS.openDir(folder_name); while (dir.next()) { Serial.println(dir.fileName()); } } void loop() { }
|
5.从闪存文件系统中删除文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#include <FS.h> String file_name = "/taichi-maker/notes.txt"; void setup() { Serial.begin(9600); Serial.println(""); if(SPIFFS.begin()){ Serial.println("SPIFFS Started."); } else { Serial.println("SPIFFS Failed to Start."); } if (SPIFFS.remove(file_name)){ Serial.print(file_name); Serial.println(" remove sucess"); } else { Serial.print(file_name); Serial.println(" remove fail"); } } void loop() { }
|
6.显示闪存文件系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include <FS.h> FSInfo fs_info; void setup() { Serial.begin(9600); SPIFFS.begin(); Serial.println(""); Serial.println("SPIFFS Started."); SPIFFS.info(fs_info); Serial.print("totalBytes: "); Serial.print(fs_info.totalBytes); Serial.println(" Bytes"); Serial.print("usedBytes: "); Serial.print(fs_info.usedBytes); Serial.println(" Bytes"); Serial.print("maxPathLength: "); Serial.println(fs_info.maxPathLength); Serial.print("maxOpenFiles: "); Serial.println(fs_info.maxOpenFiles); Serial.print("blockSize: "); Serial.println(fs_info.blockSize); Serial.print(": "); Serial.println(fs_info.pageSize); } void loop() { }
|
ESP8266闪存文件应用
向esp8266上传任意的文件类型。