- 每一個ESP8266都配有一個閃存,這個閃存很像是一個小硬盤,我們上傳的文件就被存放在這個閃存裏。這個閃存的全稱是Serial Peripheral Interface Flash File System(SPIFFS)。除了可以存放上傳的程序以外,我們還可以將網頁文件或者系統配置文件存放在ESP8266的閃存中。
首先下載程序之前要將Flash設置爲1M或者2M和3M,這樣才能正確的訪問Flash。
- 通過串口將過程打印出來,我們將“Hello IOT World”這句話存入到閃存中。
#include <FS.h> //庫文件
String file_name = "/maker/notes.txt"; //被讀取的文件位置和名稱
void setup() {
Serial.begin(9600);
Serial.println("");
Serial.println("SPIFFS format start");
SPIFFS.format(); // 格式化SPIFFS
Serial.println("SPIFFS format finish");
if(SPIFFS.begin()){ // 啓動SPIFFS
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
File dataFile = SPIFFS.open(file_name, "w");// 建立File對象用於向 SPIFFS中的file對象(即/notes.txt)寫入信息
dataFile.println("Hello IOT World."); // 向dataFile寫入字符串信息
dataFile.close(); // 完成文件寫入後關閉文件
Serial.println("Finished Writing data ");
}
void loop() {
}
2. 通過程序從閃存文件系統讀取信息
- 當我們在Flash中存儲完數據之後,可以再通過程序把信息讀取出來。我們通過程序將存入的“Hello IOT World”讀取了出來
#include <FS.h>
String file_name = "/maker/notes.txt"; //被讀取的文件位置和名稱
void setup() {
Serial.begin(9600);
Serial.println("");
if(SPIFFS.begin()){ // 啓動SPIFFS
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
//確認閃存中是否有file_name文件
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)data
Serial.print((char)dataFile.read());
}
dataFile.close();
}
void loop() {
}
3. 通過程序向閃存文件系統文件添加信息
- 添加信息是不會刪除文件內原有信息,而是在原有信息後面添加新的信息。這與但寫入操作是有所區別的。寫入操作是將文件內容完全清除,重新寫入新信息。在這裏串口輸出多個“My Love The world!"就是因爲復位了好幾次程序,每復位一次程序執行一遍就好把這句話寫入Flash中
#include <FS.h>
String file_name = "/maker/notes.txt"; //被讀取的文件位置和名稱
void setup() {
Serial.begin(9600);
Serial.println("");
if(SPIFFS.begin()){ // 啓動SPIFFS
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
//確認閃存中是否有file_name文件
if (SPIFFS.exists(file_name)){
Serial.print(file_name);
Serial.println(" FOUND.");
} else {
Serial.print(file_name);
}
// 建立File對象用於向SPIFFS中的file對象(即/notes.txt)寫入信息
File dataFile = SPIFFS.open(file_name, "a");
dataFile.println("My Love The world!"); // 向dataFile添加字符串信息
dataFile.close(); // 完成文件操作後關閉文件
Serial.println("Writing sucess!");
File dateFile = SPIFFS.open(file_name, "r"); //建立File對象用於從SPIFFS中讀取文件
//讀取文件內容並且通過串口監視器輸出文件信息
for(int i=0; i<dateFile.size(); i++){
Serial.print((char)dateFile.read());
}
dateFile.close();
}
void loop() {
}
4.從閃存文件系統中刪除文件
- 通過該代碼,可以將之前寫入Flash中的文件刪除。
#include <FS.h>
String file_name = "/maker/notes.txt"; //被讀取的文件位置和名稱
void setup() {
Serial.begin(9600);
Serial.println("");
if(SPIFFS.begin()){ // 啓動閃存文件系統
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
//從閃存中刪除file_name文件
if (SPIFFS.remove(file_name)){
Serial.print(file_name);
Serial.println(" remove sucess");
} else {
Serial.print(file_name);
Serial.println(" remove fail");
}
}
void loop() {
}
更多內容
ESP8266—學習進程目錄索引