protected Header readHeaderFromStream(InputStream is) throws IOException { ReadableByteChannel channel = Channels.newChannel(is); // Read header fixed portion ByteBuffer headerBuffer = ShapefileUtils.readByteChannelToBuffer(channel, FIXED_HEADER_LENGTH); Header header = this.readHeaderFromBuffer(headerBuffer); // Read fields description header int fieldsHeaderLength = header.headerLength - FIXED_HEADER_LENGTH; header.fieldsHeaderBuffer = ShapefileUtils.readByteChannelToBuffer(channel, fieldsHeaderLength); return header; }