SD Card - Read available space?

You are not going to see free space on the SD change unless a new cluster is allocated to a file. That's why Sdfat has the function freeClusterCount(), which returns how many allocation units are available on the SD.

This example:

#include <SdFat.h>
SdFat sd;
SdFile file;
const uint8_t csPin = SS;
void setup() {
  Serial.begin(9600);
  if (!sd.begin(csPin) || !file.open("TEST.TXT", O_WRITE | O_CREAT | O_TRUNC)) {
    Serial.println("SD problem");
  }
  Serial.print("Cluster Size: ");
  Serial.println(512L*sd.vol()->blocksPerCluster());
}
void loop() {
  Serial.print("FreeClusters: ");
  Serial.print(sd.vol()->freeClusterCount());
  Serial.print(", File size: ");
  Serial.println(file.fileSize());
  file.println("A line to add bytes to the file");
  // force write of data to SD
  file.sync();
}

Prints this:

Cluster Size: 32768
FreeClusters: 242242, File size: 0
FreeClusters: 242241, File size: 33
FreeClusters: 242241, File size: 66
FreeClusters: 242241, File size: 99
FreeClusters: 242241, File size: 132
FreeClusters: 242241, File size: 165
FreeClusters: 242241, File size: 198
FreeClusters: 242241, File size: 231

Notice that the free cluster count decreased by one after the first write and then didn't change. This is because one cluster of 32768 bytes was allocated to the file on the first write. The cluster count won't decrease until the file is larger than 32768 bytes an then another cluster will be allocated..