二十一,ESP32 SPIFFS:读取一个文件

一,介绍

在本教程中我将检测在ESP32 使用SPIFFS 文件系统从文件中读取内容,有关于如何编写文件的详细教程,请看上一篇的教程。

在下面的的代码中,我们将在读取之前编写该文件。但如果你已经按照上一个教程进行操作的话,你可以跳过这一步。因为该文件已经保留在SPIFFS 文件系统中了。

二,硬件

  • ESP32开发板

三,电路图

四,代码设计

我们通过包含SPIFFS.h库来启动代码,因此我们可以访问从文件写入和读取所需的方法。请记住,在上一个教程中,通过包含此库,我们将可以访问SPIFFS extern变量,该变量将是用于与文件系统交互的变量。

#include "SPIFFS.h"

继续使用Arduino设置功能,我们首先初始化一个串行连接,以便稍后打印从文件中读取的内容。

Serial.begin(115200);

现在我们将通过调用SPIFFS  extern变量上的begin方法来挂载文件系统,将值true传递给输入,这样可以确保在安装失败的情况下格式化文件系统。

由于对文件系统安装成功的情况下调用begin方法返回true,否则返回false,我们也会进行错误检查以确认所有内容都已正确初始化。

if(!SPIFFS.begin(true)){
     Serial.println("An Error has occurred while mounting SPIFFS");
     return;
}

现在我们将负责编写一个名为“ /test.txt ” 的文件,相应之前我们在上一个教程中介绍过的内容。如果您已按照上一个教程并已创建该文件,则可以跳过此部分代码。

因此,我们将首先打开文件进行编写,在SPIFFS对象上调用open方法。作为第一个输入,我们传递文件的名称,然后我们传递常量FILE_WRITE,因此文件以书写模式打开。

此方法调用将返回类File的对象,我们将使用它来编写内容。

如果文件成功打开,我们将在File对象上调用print方法,将带有要写入内容的字符串作为输入传递。

我们最后会调用File对象上的close方法,以便关闭文件。

File file = SPIFFS.open("/test.txt", FILE_WRITE);
 
if(!file){
   Serial.println("There was an error opening the file for writing");
   return;
}
     
if(file.print("TEST")){
   Serial.println("File was written");;
} else {
   Serial.println("File write failed");
}
 
file.close();

现在我们已经创建了文件并编写了一些内容,我们将打开它来阅读其内容。

为了打开文件进行读取,我们再次调用SPIFFS extern变量上的open方法,将文件名称作为输入传递(记住它是“/test.txt”)。从此头文件中可以看出,文件的默认打开模式是读取,因此我们不需要传递指示打开模式的第二个参数。

同样,这将返回类File的对象。请记住,在上一个教程中,File类会覆盖Boolean C ++运算符,因此我们可以使用if条件来检查文件是否已成功打开。

File file2 = SPIFFS.open("/test.txt");
if(!file2){
    Serial.println("Failed to open file for reading");
    return;
}

我们现在将循环读取文件中的内容。我们将调用File对象上的available方法来检查剩下要读取的字节数,并使用返回的值作为读取循环的停止条件。

要从文件中读取一个字节,我们调用File对象的read方法,并将结果打印到串行端口。

while(file2.available()){
    Serial.write(file2.read());
}

读完所有字节后,我们通过调用File对象上的close方法来关闭文件

file2.close();

最终的源代码如下所示。

#include "SPIFFS.h"
void setup() {
 
   Serial.begin(115200);
 
   if(!SPIFFS.begin(true)){
        Serial.println("An Error has occurred while mounting SPIFFS");
        return;
   }
 
    File file = SPIFFS.open("/test.txt", FILE_WRITE);
 
    if(!file){
        Serial.println("There was an error opening the file for writing");
        return;
    }
     
    if(file.print("TEST")){
        Serial.println("File was written");;
    } else {
        Serial.println("File write failed");
    }
 
    file.close();
 
    File file2 = SPIFFS.open("/test.txt");
     
    if(!file2){
        Serial.println("Failed to open file for reading");
        return;
    }
 
    Serial.println("File Content:");
     
    while(file2.available()){
 
        Serial.write(file2.read());
    }
 
    file2.close();
}
 
void loop() {}

五,测试代码

要测试代码,请将其编译并上传到ESP32。完成该过程后,打开Arduino IDE串行监视器。您应该获得类似于图1的输出,该输出显示正在打印到监视器的文件的内容。

二十一,ESP32 SPIFFS:读取一个文件
图1
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论