我有一个问题,我将除第一行之外的所有内容从文件复制到另一个临时文件。然后我删除原始文件并将临时文件重命名为原始文件。在每个循环之后,我还将一行数据附加到原始文件中。该代码在第一次运行时运行良好,然后内容消失,原始文件中只有一行。
原始文件:
第1行:aaa
第2行:bbb
第3行:ccc
第4行:ddd
第5行:eee
在我第一次运行该功能后:
第一个循环:
第1行:bbb
第2行:ccc
第3行:ddd
第4行:eee
第5行:fff
第二个循环后:
第 1 行:ggg
更新:
看起来当我重命名文件并用 spiffs 打开它时,esp 看不到文件的内容,所以它只写函数结束后添加的行。
Update2:
即使我注释掉向文件添加行的函数,deleteFirstLine 函数也不起作用。我尝试在包含 5 行的文件上使用该函数。结果相同,第一个循环没问题,然后第二个循环文件中没有任何内容...
我在arduino中使用的代码:
void deleteFirstLine(String filename){
File original = SPIFFS.open(filename, "r");
String name_ = original.name();
Serial.println(name_);
if (!original) {
Serial.print("- failed to open file "); Serial.println(filename);
}else{
Serial.print("- DELETING FROM FILE "); Serial.println(filename);
//We skip the first line
original.readStringUntil('\n');
File temporary = SPIFFS.open(TEMP_PATH, "w+");
if(!temporary){
Serial.println("-- failed to open temporary file ");
}else{
while(original.available()){
temporary.print(original.readStringUntil('\n')+"\n");
}
temporary.close();
}
original.close();
if(DEBUG == 1){
if(SPIFFS.remove(filename)){
Serial.println("Old file succesfully deleted");
}else{
Serial.println("Couldn't delete file");
}
if(SPIFFS.rename(TEMP_PATH,filename)){
Serial.println("Succesfully renamed");
}else{
Serial.println("Couldn't rename file");
}
}else{
SPIFFS.remove(filename);
SPIFFS.rename(TEMP_PATH,filename);
}
}
}