arduino sd card

Hi!!
Well i have a project that i need to read constantly bytes from a binary file "byte" buf_=file.read() from sd card and make an output with port manipulation (PORTD = buf*, ... or PORTD = file.read() inside a loop) at some stable frequency.*_
I have read that because of the sd card latency the file.read() command will not excecute at the same time everytime so the output frequency will not be stable.Is this latency happens when i open the file once read until the end with a loop and then close the file???
If so,the other solution is to read from sd card each 512 bytes and store each byte into a buf array with the help of a struct according to that Fast, Efficient Data Storage on an Arduino | Majenko's Hardware Hacking Blog .The problem now is that each time i read 512bytes i have to wait for those to come plus the sd card read latency.Is it possible to make two buffer arrays of 512bytes each -> fill the first one -> start port manipulation with the first array inside a timer interrupt with frequency of (10 or 20Khz or more) so the output always have stable freq while in another loop try to fill the other array??I mean is it possible to interrupt the "file.read(buf,size of(512))" command without issues??
If so how i can deal with smooth data rate and have a stable frequency??
I believe that the same problem occurs with arduino audio players which they play wav from sd card.Please help me,thanks in advance!!!

I have read that because of the sd card latency the file.read() command will not excecute at the same time everytime

The second call to file.read() can NEVER occur at the same time as the first call.

The INTERVAL between calls will depend on what else the Arduino is doing.

The time it takes to complete a call depends on whether there is data in the buffer to read, or whether it is necessary to fetch a new buffer full of data from the file.

Is this latency happens when i open the file once read until the end with a loop and then close the file???

Opening and closing a file takes time. If speed matters, don't open the file every time you need data. Open it once, and read all the data. Then, close it once.

I mean is it possible to interrupt the "file.read(buf,size of(512))" command without issues??

It is not possible to interrupt the file read without affecting the time it takes to read the data. Whether or not that is an issue is up to you to determine.