private void writeVersionNeededToExtractAndGeneralPurposeBits( final int zipMethod, final boolean utfFallback, final boolean zip64) throws IOException { // CheckStyle:MagicNumber OFF int versionNeededToExtract = INITIAL_VERSION; GeneralPurposeBit b = new GeneralPurposeBit(); b.useUTF8ForNames(useUTF8Flag || utfFallback); if (zipMethod == DEFLATED && raf == null) { // requires version 2 as we are going to store length info // in the data descriptor versionNeededToExtract = DATA_DESCRIPTOR_MIN_VERSION; b.useDataDescriptor(true); } if (zip64) { versionNeededToExtract = ZIP64_MIN_VERSION; } // CheckStyle:MagicNumber ON // version needed to extract writeOut(ZipShort.getBytes(versionNeededToExtract)); // general purpose bit flag writeOut(b.encode()); }