Как сжать строку в Java? - PullRequest
       35

Как сжать строку в Java?

51 голосов
/ 06 сентября 2010

Я использую GZIPOutputStream или ZIPOutputStream для сжатия строки (my string.length() меньше 20), но сжатый результат длиннее исходной строки.

На каком-то сайте я обнаружил, что некоторые друзья говорили, что это потому, что моя исходная строка слишком короткая, GZIPOutputStream может использоваться для сжатия более длинных строк.

Итак, кто-нибудь может мне помочь сжать строку?

Моя функция похожа на:

String compress(String original) throws Exception {

}

Обновление:

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import java.util.zip.*;


//ZipUtil 
public class ZipUtil {
    public static String compress(String str) {
        if (str == null || str.length() == 0) {
            return str;
        }

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(out);
        gzip.write(str.getBytes());
        gzip.close();
        return out.toString("ISO-8859-1");
    }

    public static void main(String[] args) throws IOException {
        String string = "admin";
        System.out.println("after compress:");
        System.out.println(ZipUtil.compress(string));
    }
}

Результат:

alt text

Ответы [ 11 ]

0 голосов
/ 06 сентября 2010

Вы не видите сжатия для вашей строки, так как вам требуется по крайней мере пара сотен байтов для реального сжатия с использованием GZIPOutputStream или ZIPOutputStream. Ваша строка слишком мала. (Я не понимаю, почему вы требуете сжатие для того же самого)

Проверьте вывод из этой статьи :

В статье также показано, как сжимать и распаковывать данные на лету в чтобы уменьшить сетевой трафик и улучшить производительность вашего клиент / серверные приложения. Сжатие данных на лету, однако, улучшает производительность клиент-серверные приложения только когда сжатые объекты более чем пару сотен байтов. Вы не сможет наблюдать улучшение производительности, если сжатые объекты и переданы простые строковые объекты, например.

...