code: private void addFile(File root, File file, String prefix, ZipOutputStream zos) throws IOException {
          FileInputStream fis = new FileInputStream(file);
          ZipEntry jarEntry = new ZipEntry(prefix + normalizePath(root, file));
          zos.putNextEntry(jarEntry);
          StreamUtils.copyStream(fis, zos, false);
          fis.close();
      }
docs: Adds a given file to the given ZIP output stream.
  
  @param root
  an ancestor of {@code file}, used to determine the relative path within the
  archive
  @param file
  file to be added
  @param zos
  ZIP output stream
  @throws IOException