would that be better than this:
length ||= @file_length - @file_position