code: private void read() throws IOException {
  		// check headerbytes
  		Preconditions.checkState(headerbytes.length >= 28,
  				"not enough headerbytes for MS DOS Header");
  		// check MZ signature
  		if (!hasSignature(headerbytes)) {
  			throw new IOException("No MZ Signature found");
  		}
  		// define specification format
  		SpecificationFormat format = new SpecificationFormat(0, 3, 1, 2);
  		// read header fields
  		try {
  			headerData = IOUtil.readHeaderEntries(MSDOSHeaderKey.class, format,
  					SPEC_LOCATION, headerbytes, getOffset());
  		} catch (IOException e) {
  			logger.error("unable to read the msdos specification: "
  					+ e.getMessage());
  		}
  	}
docs: Reads the header fields.