func (j *joiner) Read(b []byte) (n int, err error) {
	read, err := j.ReadAt(b, j.off)
	if err != nil && err != io.EOF {
		return read, err
	}

	j.off += int64(read)
	return read, err
}
// Read is called by the consumer to retrieve the joined data.
// It must be called with a buffer equal to the maximum chunk size.
Read is called by the consumer to retrieve the joined data.
It must be called with a buffer equal to the maximum chunk size.
// Read is called by the consumer to retrieve the joined data . // It must be called with a buffer equal to the maximum chunk size .
func (j *joiner) Read(b []byte) (n int, err error) {
	read, err := j.ReadAt(b, j.off)
	if err != nil && err != io.EOF {
		return read, err
	}
	j.off += int64(read)
	return read, err
}
func ( j * joiner ) Read ( b [ ] byte ) ( n int , err error ) { read , err := j . ReadAt ( b , j . off ) if err != nil && err != io . EOF { return read , err } j . off += int64 ( read ) return read , err }
Read is called by the consumer to retrieve the joined data.
Read is called by the consumer to retrieve the joined data .