Reading from SD Card with Arduino 33 BLE and receiving on Android phone

I am using an Arduino 33 BLE and trying to read from the SPI SD card breakout that is wired to it. I then want to send this data either a char or string at a time to my Android smartphone using the MIT App Inventor app I've made.

The issue I'm running into is that I can only see the first character of the SD card, and it doesn't ever update to the rest of them. Is there something wrong with my approach here, and if so can I get some pointers in the right direction?

MIT App Inventor App
BLE Remote.aia (156.7 KB)

(Relevant) Arduino Code from my project

BLEService nanoService("0000ffe1-0000-1000-8000-00805f9b34fb"); // BLE LED Service

// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
String test = "";
String gamer = "";
char holder = '\0';
int sync = 0;

BLEByteCharacteristic bleRW("0000ffe0-0000-1000-8000-00805f9b34fb", BLERead | BLEWrite);
BLEStringCharacteristic sdSend("0000ffe2-0000-1000-8000-00805f9b34fb", BLERead | BLEWrite, 512);

      while (1) {
        // listen for BLE peripherals to connect:
        BLEDevice central = BLE.central();

        // if a central is connected to peripheral:
        if (central) {
          Serial.print("Connected to central: ");
          // print the central's MAC address:

          // while the central is still connected to peripheral:
          while (central.connected()) {

            // if the remote device wrote to the characteristic,
            // use the value to decide what happens
            if (bleRW.written()) { 
              while (bleRW.value() == sync);
              sync = bleRW.value();
              soilFile ="SoilFile.txt");
              if (soilFile) {
                if (soilFile.available()) { // read from the file until there's nothing else in it
                  holder =; 
                  test = String(holder); 
          // when the central disconnects, print it out:
          Serial.print(F("Disconnected from central: "));