Arduino — SD текстовый файл удалить строку

Я строю скрипт для удаления одной строки из SD из файла .txt.

Скрипт работает хорошо, но если я использую длинную строку TextToRemove (например, длина равна 9), скрипт игнорирует строку и печатает пустую строку. Кроме того, следующее условие всегда верно.

if (buffer.substring(0, buffer.length() - 1) != TextToRemove)

В основном идея состоит в том, чтобы

  1. Создать новый файл *_tmp
  2. Читать первую строку из исходного файла
  3. Сравните, если строка равна TestToRemove
  4. Если текст не равен println в файл tmp, если равен igonore строка
  5. Повторите шаги 2-4.
  6. Удалить оригинальный файл
  7. переименовывать 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;
}

Большое спасибо за Вашу помощь

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector