Escribir datos en tarjeta SD desde el comienzo del archivo [SOLUCIONADO]

Hola buenas, estoy haciendo un programa con una pantalla TFT que tiene para SD card. El problema es que quiero escribir texto desde el comienzo del archivo, pero no puedo. Ej:

En el archivo:
hola
123
abc

Quiero escribir buenas, y que quede así:
buenas
hola
123
abc

Pero queda así:
hola
123
abc
buenas

¿Cómo puedo hacer?

Lo que puedes hacer es leer (xxx.read()) todo el contenido de la SD y guardas a una variable, luego regresa la posicion del "cursor" al inicio (xxx.seek(0)), escribe (xxx.println("buenas\n")) la palabra "buenas" y a continuacion escribe el resto desde la variable.

o puedes asignar un id a cada frase o texto, y luego leerlos tal como estan pero presentarlos ordenados.

Hola Kike_GL! Gracias por responder. Me parece buena idea tu sugerencia, pero no sé si es muy viable en mi caso, ya que estoy haciendo un registro para unos sensores. A la larga, el archivo va a almacenar mucho texto y no sé si es bueno cargarlo todo en la memoria.

Hola surbyte! Gracias por la respuesta. No sé si entendí muy bien tu idea. ¿Decís que escriba una forma de identificar el texto? Ej:
1-hola
2-123
3-abc
4-buenas
¿Y luego leerlo de la forma que necesite?

Un poco de información que debería haber dado:

  • Uso Arduino Mega. Lamentablemente compré una copia, no una original, no supe identificarlo en el sitio web donde compré. No sé si puede afectar.
  • Uso una TFT con ranura para SD.
  • Este es el código de la parte que escribe datos en la SD:
//Registrar
//Abrir el archivo
file = SD.open("reg.txt", FILE_WRITE);

//Mover el cursor al comienzo del archivo (No lo hace)
file.seek(0);

//Escribir el texto en el archivo (Esto funciona bien)
file.print("[");
//Fecha
if (rtc_day < 10) {file.print("0");}
file.print(String(rtc_day) + "/");
if (rtc_month < 10) {file.print("0");}
file.print(String(rtc_month) + " ");
//Hora
if (rtc_hour < 10) {file.print("0");}
file.print(String(rtc_hour) + ":");
if (rtc_minute < 10) {file.print("0");}
file.print(String(rtc_minute) + "] ");
file.print("Prom:" + String(averageSensor) + " S1:" + String(sensor0) + " S2:" + String(sensor1) + " S3:" + String(sensor2) + " S4:" + String(sensor3) + " S5:" + String(sensor4));
file.println(" ON AUTO");

//Cerrar el archivo
file.close();

Mi idea es hacer un registro y que se pueda leer desde la TFT, pero que lea las primeras líneas y ya. Pero si debe recorrer hasta el final del archivo y leer el txt hacia atras me parace algo complicado de hacer.

Deberías plantearte utilizar un RTC o una conexión a internet para obtener la hora. Luego guardas cada dato con un Timestamp y es relativamente sencillo ubicar el ultimo dato, ademas esta el plus de obtener un historial detallado.
Saludos

Estuve pensando en la forma que me sugirió surbyte, y creo que puedo hacer algo así.
Lo que hice fue que empiezo a leer desde abajo hacia arriba, y voy contando los saltos de líneas. Entonces, al llegar a la cantidad de líneas que necesito, leo desde la posición actual hasta el final.

Dejo el código que utilizo por si, en algún futuro, le sirve a alguien más:

//Leer una vez para escribir en la TFT
file = SD.open("reg.txt");
if (file){
  file.seek(file.size()-1);
  //Variable para comprobar si ya puede leer
  bool is_ready_to_read = false;
  while (file.available()){
    //Leer el valor y almacenarlo en una variable
    char character = file.read();
    //Variable para comprobar si hay texto hacia atras
    bool is_text;
    //Mover el cursor hacia atras
    if (is_ready_to_read == false){
      //Volver atras en el texto
      is_text = file.seek(file.position()-2);

      //Anotar la cantidad de líneas
      if (character == '\n' && is_text) {check_print_line++;}
      //Comprobar si ya puede leer
      if (check_print_line == 10 || is_text == false) {is_ready_to_read = true;}
    }
     
    if (is_ready_to_read) {tft.print(character);}
  }
  file.close();
}

Me guié por este video: Leer Ultimo Dato (Linea) de Memoria SD con ARDUINO - Modulo microSD - YouTube

¡Muchas gracias a todos por ayudar! (^_^)