I tried to increase the delay time on my while loop when read the data from SD, and I still facing this problem... if I decrease the delay It's happens more frequently...
You don't need a delay in there at all.
How was the file created? If a function like File::println() was used to write to the file, the 8 character string is followed by a carriage return AND a line feed. You are only stripping out the carriage return, leaving the line feed.