Как я могу преобразовать строку в строку GZIP Base64? - PullRequest
9 голосов
/ 21 октября 2011

Я пытался выяснить, используя GZIPOutputStream и т.п., но не смог понять их.Все, что я хочу сделать - это преобразовать строку символов - "Строка символов" в формат GZIP Base64.Как я могу это сделать?

РЕДАКТИРОВАТЬ: Под форматом GZIP Base64 я имею в виду, что строка сначала сжимается с использованием GZIP, а затем преобразуется в Base64

Ответы [ 2 ]

23 голосов
/ 21 октября 2011

Используйте Кодек Apache Commons Base64OutputStream.

Вот пример класса:

import java.util.zip.GZIPOutputStream;
import org.apache.commons.codec.binary.Base64OutputStream;

public class Test {
    public static void main(String[] args) {
        String text = "a string of characters";
        try {
            Base64OutputStream b64os = new Base64OutputStream(System.out);
            GZIPOutputStream gzip = new GZIPOutputStream(b64os);
            gzip.write(text.getBytes("UTF-8"));
            gzip.close();
            b64os.close();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

Какие выходы:

H4sIAAAAAAAAAEtUKC4pysxLV8hPU0jOSCxKTC5JLSoGAOP+cfkWAAAA

В Linux вы можете подтвердить, что это работает с:

echo 'H4sIAAAAAAAAAEtUKC4pysxLV8hPU0jOSCxKTC5JLSoGAOP+cfkWAAAA' | base64 -d | gunzip

(Обратите внимание, что в OSX вы должны использовать base64 -D вместо base64 -d в приведенной выше команде)

Какие выходы:

a string of characters
0 голосов
/ 13 ноября 2013

Мы можем использовать Java GZIPOutputStream / GZIInputStream и кодек apache commons Base64 Encoder и декодер: lifelongprogrammer.blogspot.com

...