Я строю скрипт для удаления одной строки из SD из файла .txt.
Скрипт работает хорошо, но если я использую длинную строку TextToRemove (например, длина равна 9), скрипт игнорирует строку и печатает пустую строку. Кроме того, следующее условие всегда верно.
if (buffer.substring(0, buffer.length() - 1) != TextToRemove)
В основном идея состоит в том, чтобы
*_tmp
tmp
файл (remove _tmp
)boolean RemovePin(String TextToRemove, String FileName) {
String buffer;
String FileName_new = FileName + "_tmp";
File myFile;
File myFile_new;
boolean Removed = false;
char filename2[FileName.length() + 1];
FileName.toCharArray(filename2, sizeof(filename2));
myFile = SD.open(FileName);
myFile_new = SD.open(FileName + "_tmp", FILE_WRITE);
if (myFile_new) {
if (myFile) {
while (myFile.available()) {
buffer = myFile.readStringUntil('\n');
if (buffer.substring(0, buffer.length() - 1) != TextToRemove) {
myFile_new.println(buffer.substring(0, buffer.length() - 1));
} else {
Removed = true;
}
}
myFile.close();
SD.remove(filename2);
} else {
Serial.print("error opening ");
Serial.println(FileName);
}
myFile_new.rename(SD.vwd(), filename2);
myFile_new.close();
} else {
Serial.println("error opening tmp file");
}
return Removed;
}
Большое спасибо за Вашу помощь
Задача ещё не решена.
Других решений пока нет …