NodeMCU-32S文件系统

2022/10/23 esp32

# 1.写入文件

SPIFFS.begin()用于启动闪存文件系统。在每次使用闪存文件系统以前都需要执行这一操作。如果闪存文件系统成功启动,该函数的返回值为布尔型,如果成功启动闪存文件形同,则返回真。否则将返回假。

File dataFile = SPIFFS.open(file_name, "w");这条语句中,open函数可用于对SPIFFS进行操作。该函数共有两个参数。第一个参数file_name是被操作的文件名称,第二个参数"w"代表此操作为向SPIFFS写入文件信息。请注意:如果文件系统没有此文件,此操作将会在文件系统中建立该文件。如果文件系统有该文件,则程序将会重新建立该文件,即原有文件信息将会被覆盖。

dataFile.println("Hello IOT World.");用于向dataFile文件写入信息。

dataFile.close();用于关闭dataFile文件。结束文件操作后,应执行此操作。

#include <SPIFFS.h>

// 被读取的文件位置和名称
String file_name = "/tudou/notes.txt";


void setup()
{
  Serial.begin(115200);
  Serial.println("");

  Serial.println("SPIFFS fromat start");
  // 格式化flash
  SPIFFS.format();
  Serial.println("SPIFFS format finish");

  // 启动SPIFFS
  if(SPIFFS.begin()){
    Serial.println("SPIFFS Started.");
  }else{
    Serial.println("SPIFFS Failed to Start.");
  }

  // 建立File对象用于向SPIFFS中的file对象写入信息
  File dataFile = SPIFFS.open(file_name,"w");
  // 向dataFile写入字符信息
  dataFile.println("Hello IOT World.");
  // 关闭文件
  dataFile.close();
  Serial.println("Finished Writing data to SPIFFS");
}

void loop(void)
{
}

# 2.读取文件

SPIFFS.exists(file_name)用于检查闪存文件系统中有file_name文件

File dataFile = SPIFFS.open(file_name, "r");这条语句中,open函数可用于对SPIFFS进行操作。

dataFile.size()。该函数将会返回dataFile的大小。

dataFile.read()将会读取dataFile文件内容。

#include <SPIFFS.h>

// 被读取的文件位置和名称
String file_name = "/tudou/notes.txt";


void setup()
{
  Serial.begin(115200);
  Serial.println("");

  // 启动SPIFFS
  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.println(" 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(void)
{
}

串口输出

SPIFFS Started.
/tudou/notes.txt FOUND.
Hello IOT World.

# 3.追加信息

File dataFile = SPIFFS.open(file_name, "a");第二个参数"a"代表向该文件添加信息。

#include <SPIFFS.h>

// 被读取的文件位置和名称
String file_name = "/tudou/notes.txt";


void setup()
{
  Serial.begin(115200);
  Serial.println("");

  // 启动SPIFFS
  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.");
  }else{
    Serial.println(file_name);
    Serial.print(" NOT FOUND.");
  }
}

void loop(void)
{
}

# 4.删除文件

SPIFFS.remove(file_name)file_name所指代的文件进行了删除操作

#include <SPIFFS.h>

// 被读取的文件位置和名称
String file_name = "/tudou/notes.txt";

void setup()
{
  Serial.begin(115200);
  Serial.println("");

  // 启动SPIFFS
  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(void)
{
}