ndfweb.cn

ESP8266 閃存文件係統(SPIFFS)


2021-07-02 22:58:07 (4820)



http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/spiffs/spiffs-operation/

閃存:用於存放上傳的程序網頁文件或者係統配置文件

ESP8266閃存係統和計算機係統一樣,可以對文件進行讀寫操作


通過程序向閃存文件係統寫入信息


首先可以選擇緩存的大小



#include <FS.h>  

 

String file_name = "/taichi-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 to SPIFFS");

}

 

void loop() {

}


通過程序從閃存文件係統讀取信息


#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.");

  }

 

  //確認閃存中是否有file_name文件

  if (SPIFFS.exists(file_name)){

    Serial.print(file_name);

    Serial.println(" FOUND.");

  } else {

    Serial.print(file_name);

    Serial.print(" NOT FOUND.");

  }

 

  //建立File對象用於從SPIFFS中讀取文件

  File dataFile = SPIFFS.open(file_name, "r"); 

 

  //讀取文件內容並且通過串口監視器輸出文件信息

  for(int i=0; i<dataFile.size(); i++){

    Serial.print((char)dataFile.read());       

  }

 

  //完成文件讀取後關閉文件

  dataFile.close();                           

}

 

void loop() {

}

通過程序向閃存文件係統文件添加信息


#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.");

  }

 

  //確認閃存中是否有file_name文件

  if (SPIFFS.exists(file_name)){

    

    Serial.print(file_name);

    Serial.println(" FOUND.");

 

    File dataFile = SPIFFS.open(file_name, "a");// 建立File對象用於向SPIFFS中的file對象(即/notes.txt)寫入信息

    dataFile.println("This is Appended Info."); // 向dataFile添加字符串信息

    dataFile.close();                           // 完成文件操作後關閉文件   

    Serial.println("Finished Appending data to SPIFFS");

    

  } else {

    Serial.print(file_name);

    Serial.print(" NOT FOUND.");

  }

                        

}

 

void loop() {


通過程序讀取目錄內容


#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");// 建立File對象用於向SPIFFS中的file對象(即myFile.txt)寫入信息

  dataFile.println("Hello Taichi-Maker.");    // 向dataFile寫入字符串信息

  dataFile.close();                           // 完成文件寫入後關閉文件

  Serial.println(F("Finished Writing data to SPIFFS"));

 

  // 顯示目錄中文件內容以及文件大小

  Dir dir = SPIFFS.openDir(folder_name);  // 建立“目錄”對象

  

  while (dir.next()) {  // dir.next()用於檢查目錄中是否還有“下一個文件”

    Serial.println(dir.fileName()); // 輸出文件名

  }

}

 

void loop() {

}


從閃存文件係統中刪除文件


#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.");

  }

  

  //從閃存中刪除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() {

}


顯示閃存文件係統信息


#include <FS.h>

 

FSInfo fs_info;

 

void setup() {

  Serial.begin(9600);

 

  SPIFFS.begin();       //啟動SPIFFS

  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"); 

 

  // 最大文件名字符限製(含路徑和'\0')

  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("pageSize: ");

  Serial.println(fs_info.pageSize);

}

 

void loop() {


本文版权:http://www.ndfweb.cn/news-875.html
  NDF俱乐部
  国际域名注册
  建站咨询
简体中文 NDF网站建设淘宝店 | ICO图标在线生成 | 外贸网站建设 | 联系我们
©2007-2025 NDF Corporation 鲁ICP备08005967号 Sitemap - RSSRSS订阅