Esp32-Arduino 学习(闪存文件系统)


注:本文代码来自于太极创客团队: www.taichi-maker.com,由于太极创客的教程是基于esp8266,所以略有改动

闪存文件写入

#include "SPIFFS.h" 
 
String file_name = "/notes.txt"; //被读取的文件位置和名称
 
void setup() {
  Serial.begin(115200);
  Serial.println("");
  
  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. And for extend the length of file, I write this.");       // 向dataFile写入字符串信息
  dataFile.close();                           // 完成文件写入后关闭文件
  Serial.println("Finished Writing data to SPIFFS");
}
 
void loop() {
}

代码中已添加注释,不在赘述需要注意的是,8266里面可以在根目录下创建目录,而32是不可以的,只能以Arduino IDE 的上传的方式上传目录,效果图
在这里插入图片描述

闪存文件读取

#include "SPIFFS.h"
 
String file_name = "/notes.txt";              //被读取的文件位置和名称
 
void setup() {
  Serial.begin(115200);
  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 <SPIFFS.h>
 
String file_name = "/notes.txt";              //被读取的文件位置和名称
 
void setup() {
  Serial.begin(115200);
  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");
  } 

  if (SPIFFS.exists(file_name)){
    Serial.print(file_name);
    Serial.println(" FOUND.");
  } else {
    Serial.print(file_name);
    Serial.print(" FILE WAS REMOVED!");
  }
                        
}
 
void loop() {
}

在这里插入图片描述
串口显示已经移除了文件

从Arduino IDE 上传文件

在搭建网络服务器时,需要的数据量是非常大而多的,这时可以从IDE上传文件到闪存文件系统,由于本人能力有限,在这里给出太极创客的教程太极创客-使用IDE上传文件
注意:太极创客使用的是esp8266,所以文中的地址要改为esp32的
点击这个链接从github官方页面下载文件:https://github.com/me-no-dev/arduino-esp32fs-plugin

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好!对于ESP32和Arduino,您可以使用ESP32的SPIFFS(SPI Flash File System)库来读取文件。SPIFFS库允许您在ESP32的闪存上创建和处理文件。 首先,您需要在Arduino IDE中安装ESP32开发板支持。然后,按照以下步骤进行文件读取: 1. 创建一个SPIFFS文件系统: - 在您的Arduino代码中包含SPIFFS库:`#include <SPIFFS.h>` - 在`setup()`函数中使用`SPIFFS.begin()`来初始化SPIFFS文件系统。 2. 打开要读取的文件: - 使用`File`对象打开文件并获取其句柄,例如:`File file = SPIFFS.open("/filename.txt", "r");` - 在`open()`函数中,第一个参数是要打开的文件路径,第二个参数是打开模式。使用"r"来以只读模式打开文件。 3. 检查文件是否成功打开: - 使用`file`对象的`available()`函数来检查文件是否成功打开。如果返回值大于0,则文件已成功打开。 4. 读取文件内容: - 使用`file`对象的`read()`函数来读取文件内容,并将其保存在适当的变量中。例如:`String content = file.readString();` 5. 关闭文件: - 使用`file`对象的`close()`函数来关闭文件,以释放资源:`file.close();` 以下是一个完整的示例代码: ```cpp #include <SPIFFS.h> void setup() { Serial.begin(115200); SPIFFS.begin(); File file = SPIFFS.open("/filename.txt", "r"); if (file.available()) { String content = file.readString(); Serial.println(content); } file.close(); } void loop() { // your code here } ``` 请确保将"/filename.txt"替换为您要读取的实际文件路径。读取到的文件内容将通过串口输出。 希望这可以帮助到您!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值