Reading Byte per Byte from a txt File on SD card without using the 512B Buffer

I am trying to read every sequenced-byte that is located on a txt file in the SD card. I have been reading quite a lot about the SPI and SD libraries, But I have found a lot of different information that makes me feel confused.

1.Is it really possible to read information byte per byte without buffering by default as usually happens when you use the SD or SDFat? Do you know a Library that makes it really possible?

2.Also, I found on the SDFile.cpp that is located in the src folder in the SD library, a part that mentions " // no buffering needed if n == 512 or user requests no buffering" How is it possible to request no buffering? I found the unbufferedread() function but I am afraid that this actually reads the number of bytes and not the information on the bytes (Is it possible?).

Do you know where may I found examples of this kind of low level functions for me to find out How may I use them for the mentioned purpose. Or a library that would make my life easier in order to get the unbufferred read. I want a continuous data sending into a DAC, that's why I am trying no to get the unbufferred in order to make all the data's sent as continuous as possible.

Sorry for making so many questions, I just started to use Arduino a couple of months ago so I am not that familiarized with all the terms.

Thanks for your advise.

Demperor:
1.Is it really possible to read information byte per byte without buffering by default as usually happens when you use the SD or SDFat?

In theory, yes.

Demperor:
Do you know a Library that makes it really possible?

I don't; but if that exists, then it's most likely it rules out anything that has to do with writing (i.e. creating/deleting files/folders, opening files to write). I've explained here why.

If it doesn't exist, then I'll be motivated to modify the existing SD library to turn it into a read-only version that allows to decrease or completely remove the cache (excluding the directory entry information that a File object should always hold). It should also take less program space since all routines that deal with updating filesystem data will be no longer necessary.

Demperor:
2.Also, I found on the SDFile.cpp that is located in the src folder in the SD library, a part that mentions " // no buffering needed if n == 512 or user requests no buffering" How is it possible to request no buffering?

I'll have to dig deeper into the source code to figure out that. Maybe also check the Sd2Card and SdVolume sources to see how. The SdVolume class is what creates the 512-bytes cache.

Demperor:
I found the unbufferedread() function but I am afraid that this actually reads the number of bytes and not the information on the bytes (Is it possible?).

I would tell you only if you can point out where exactly its implementation is (usually in a .cpp file).

Demperor:
Do you know where may I found examples of this kind of low level functions for me to find out

Again no idea, but also they would be not-so-easy to find because that kinda beats up the purpose of "simplicity to code".

Demperor:
I want a continuous data sending into a DAC, that's why I am trying no to get the unbufferred in order to make all the data's sent as continuous as possible.

For that purpose, unbuffered retrieval will constrain the system's overall speed to the slowest component (the SPI data transfer in this case); also making it very susceptible to jitter if interrupts get in the way.

The buffer exists to damp those irregularities (at a cost of latency in real-time applications), allowing for a smooth and relatively faster data stream.

If you have RAM to spare, then why not going for a double buffer instead? That's what allows TMRpcm to have a smooth audio playback; despite having a intermediate cache in the SD library, and enabled the interrupt that makes millis() and micros() possible.