La cosa migliore è strutturare la scrittura in modo che OGNI salvataggio occupi esattamente lo stesso numero di bytes così da pter effettuare calcoli sulla posizione.
Ad esempio, se tu devi scrivere sempre degli "int", sai che essi occupano 2 bytes quindi, ad ogni salvataggio sulla SD, farai una scrittura con SD.write(&tuoInt, 2); ovvero scriverai, in binario (la cosa è comunque anche fattibile in ASCII con altri metodi) i 2 bytes del tuo "int".
Alla partenza del programma, per recuperare l'ultimo valore "int" scritto, ti basterà posizionarti alla fine del file, leggere la posizione corrente nel file (con la SD.position()), decrementare la posizione di DUE (la lunghezza di un "int"), posizionarsi su tale nuova posizione (con la SD.seek()) e leggere i DUE bytes che compongono il tuo ultimo "int".
Se invece che lavorare in binario vuoi lavorare in ASCII, devi solo considerare che un "int" va da -32768 a 32767 e che quindi devi fare in modo che OGNI salvataggio del valore occupi SEMPRE i 6 caratteri necessari (quindi, ad esempio, il valore 12 lo dovrai salvare come +00012 ed il valore -12 come -00012, così che siano sempre occupati 6 caratteri) e poi applicare la stessa logica di prima solo che lo spostamento per recuperare l'ultimo valore dovrà essere di 6 caratteri invece che di 2 bytes.
Guglielmo