Java: Error al crear un GZIPInputStream: no en formato GZIP

Estoy tratando de usar el siguiente código Java para comprimir y descomprimir una cadena. Pero la línea que crea un nuevo objeto GZipInputStream a partir de un nuevo objeto ByteArrayInputStream lanza una excepción "java.util.zip.ZipException: no en formato GZIP". Alguien sabe cómo resolver esto?

        String orig = ".............";

        // compress it
        ByteArrayOutputStream baostream = new ByteArrayOutputStream();
        OutputStream outStream = new GZIPOutputStream(baostream);
        outStream.write(orig.getBytes());
        outStream.close();
        String compressedStr = baostream.toString();

        // uncompress it
        InputStream inStream = new GZIPInputStream(new ByteArrayInputStream(compressedStr.getBytes()));
        ByteArrayOutputStream baoStream2 = new ByteArrayOutputStream();
        byte[] buffer = new byte[8192];
        int len;
        while((len = inStream.read(buffer))>0)
            baoStream2.write(buffer, 0, len);
        String uncompressedStr = baoStream2.toString();

Respuestas a la pregunta(3)

Su respuesta a la pregunta