ndfweb.cn

ESP8266 闪存文件系统(SPIFFS)


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


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网站建设淘宝店 | 实用工具 | 外貿網站建設 | 联系我们
鲁公网安备 37110202000336号 鲁ICP备2021027697号-1 Sitemap - RSSRSS订阅