I'm not sure where this should go but I'm sure it's a bug.
In Stream.readBytes() - Arduino Reference readBytes is documented as taking either char[] or byte[] but when used with an SD File object you have to cast it to char[]. Hell it's called readBytes not readChars. Perversely enough an eithernet client wants bytes.
This works but vice-versa fails
** byte bfr[outBfrSz];**
** source.readBytes((char)bfr,outBfrSz);**
** client->write(bfr,outBfrSz);**