At some point all (file) IO is blocking, some thread blocks until the OS returns the data you requested from that external device (disk/network). Some external device APIs don't block, they use callbacks instead (eg BLE).
You can wrap it inside a non blocking (suspending) call, though.