我有一個問題,我複製一切,但第一行從文件到另一個臨時文件。然後我刪除原始文件並將臨時文件重命名爲原始文件。在每個循環之後,我還將一行數據附加到原始文件中。代碼運行良好,然後內容消失,原始文件中只有1行。ESP8266 SPIFFS複製文件內容,刪除和重命名
原始文件:
第1行:AAA
線2:BBB
線3:CCC
線4:DDD
線5:EEE
後我運行的功能第一次:
第一次循環:
行1:BBB
第2行:CCC
線3:DDD
線4:EEE
線5:FFF
後第二次循環:
第1行:GGG
更新:
看起來像這樣當我重命名文件並用spiffs打開它,esp沒有看到文件的內容,所以它只是wri測試函數結束後添加的行。
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);
}
}
}
'open()'它在追加模式下防止丟失數據追加 – dandavis
您是說我應該在追加模式下打開原始文件? – zidrrr