esp32 spiffs 文件做多写100行,有新的内容就覆盖最旧的内容 idf 代码
时间: 2024-05-09 18:14:23 浏览: 21
你可以使用以下代码来实现ESP32上的SPIFFS文件系统的循环写入:
```c
#include <SPIFFS.h>
void setup() {
// 初始化SPIFFS文件系统
if(!SPIFFS.begin(true)){
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
// 打开要进行循环写入的文件
File file = SPIFFS.open("/data.txt", FILE_WRITE);
// 如果文件没有打开,输出错误信息并返回
if(!file){
Serial.println("Failed to open file for writing");
return;
}
// 写入初始的100行空内容
for(int i=0; i<100; i++){
file.println("");
}
// 关闭文件
file.close();
}
void loop() {
// 打开文件进行写入
File file = SPIFFS.open("/data.txt", FILE_WRITE);
// 如果文件没有打开,输出错误信息并返回
if(!file){
Serial.println("Failed to open file for writing");
return;
}
// 获取文件当前的大小
int fileSize = file.size();
// 移动文件指针到最后
file.seek(fileSize);
// 写入新的一行内容
file.println("New content");
// 关闭文件
file.close();
// 如果文件大小已经达到100行,则从文件开头处开始覆盖最旧的内容
if(fileSize >= 100){
// 打开文件进行覆盖写入
file = SPIFFS.open("/data.txt", FILE_WRITE);
// 如果文件没有打开,输出错误信息并返回
if(!file){
Serial.println("Failed to open file for writing");
return;
}
// 移动文件指针到第二行的位置
file.seek(2);
// 读取文件中第三行到最后一行的内容
String content = "";
for(int i=0; i<fileSize-2; i++){
content += (char)file.read();
}
// 关闭文件
file.close();
// 打开文件进行覆盖写入
file = SPIFFS.open("/data.txt", FILE_WRITE);
// 如果文件没有打开,输出错误信息并返回
if(!file){
Serial.println("Failed to open file for writing");
return;
}
// 写入新的一行内容
file.println("New content");
// 写入读取到的内容
file.print(content);
// 关闭文件
file.close();
}
// 延时一段时间
delay(1000);
}
```
这段代码中,首先在`setup()`函数中打开文件进行写入,写入100行空内容作为文件的初始内容。然后在`loop()`函数中,每次打开文件进行写入,并获取文件的当前大小。如果文件大小已经达到100行,则从文件开头处开始覆盖最旧的内容。具体的实现方法是,先从第三行开始读取到最后一行的内容,然后在文件开头处写入新的一行内容,并将读取到的内容写入。最后关闭文件并延时一段时间。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)