Working with SD Card - CSV Files

Appreciate your feedback, but not much help to me. I was really after a methodology - an approach to use to achieve the job of user selection from a long list of data using an encoder.

As I know the length of data I'm reading from the file, I can use static allocation and create a simple array of chars: char blah[] = "Single";

I'm using an Arduino Mega 2560 which has 256KB of flash memory. Minus the 8KB used by the Bootloader, that leaves me with 248KB for code, which is enough for what I'm doing.

But variables instantiated by the code are stored in SRAM, of which there is only 8KB! Why so little? Surely its not a space issue.

In some instances the data in my file is around 20K. I do have the option of caching small chunks of the data at a time, but that gets more complicated and calls for more code as the user can scroll the encoder forward and backward and at varying acceleration.

As I don't need to modify the strings or data while my app (sketch) is running, I think my best bet will be to store the data in flash (program) memory instead of SRAM.