It looks like skip() would skip bytes on data stream. That assures next read is going to be a checksum error. If skip() is not supported, ideally it should throw an exception with clear message.
Also positional reads (read(long position, buf)) don't seem to checksum the data. It might be ok, but it is not obvious to users.