Java - Как выполнить сжатие Gzip объекта java - PullRequest
0 голосов
/ 09 февраля 2020

Как сжать объект Java pojo с помощью Gzip?

Ниже кода сжимать строку -

public static String compress(String str, String inEncoding) {
        if (str == null || str.length() == 0) {
            return str;
        }
        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes(inEncoding));
            gzip.close();
            return URLEncoder.encode(out.toString("ISO-8859-1"), "UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

Вместо String str в качестве параметра, как использовать ниже класс pojo объект (клиент cc) и сжатие?

класс Pojo -

Class client {
Public string name;
Public string location;
//Getter and setter methods
}

Как можно сжать и распаковать этот класс pojo клиента с помощью gzip.?

1 Ответ

1 голос
/ 09 февраля 2020

Вы можете сжать свой класс Client, который реализует сериализацию, используя gzip, выполнив следующее:

public static bytes[] compressThis(Client client){
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  GZIPOutputStream gzipOut = new GZIPOutputStream(client);
  ObjectOutputStream objectOut = new ObjectOutputStream(gzipOut);
  objectOut.writeObject(client);
  objectOut.close();
  return baos.toByteArray();
}

После чего вы можете распаковать его, выполнив следующие действия:

public static getClientFrom(bytes[] bytes){
  ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  GZIPInputStream gzipIn = new GZIPInputStream(bais);
  ObjectInputStream objectIn = new ObjectInputStream(gzipIn);
  Client client = (Client) objectIn.readObject();
  objectIn.close();
  return client;
}
...