Poking through the example code of SDFS, I saw the following:
static ArduinoOutStream cout(Serial);
// F stores strings in flash to save RAM
cout << F("\ntype any character to start\n");
What exactly is << doing in this case? Moreover, F seems to never be defined prior to this. This seems like a useful trick, but I don't understand how it works.
full code available here: https://github.com/greiman/SdFs/blob/master/examples/SdInfo/SdInfo.ino