Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compress a String in Java?

I use GZIPOutputStream or ZIPOutputStream to compress a String (my string.length() is less than 20), but the compressed result is longer than the original string.

On some site, I found some friends said that this is because my original string is too short, GZIPOutputStream can be used to compress longer strings.

so, can somebody give me a help to compress a String?

My function is like:

String compress(String original) throws Exception {  } 

Update:

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));     } } 

The result is :

alt text

like image 408
user421851 Avatar asked Sep 06 '10 06:09

user421851


People also ask

How do you compress a string?

Start by taking the first character of the given string and appending it to the compressed string. Next, count the number of occurrences of that specific character and append it to the compressed string. Repeat this process for all the characters until the end of the string is reached.

How do you deflate a string in Java?

deflate(byte[] b) method compresses the input data and fills specified buffer with compressed data. Returns actual number of bytes of compressed data. A return value of 0 indicates that needsInput should be called in order to determine if more input data is required.

How do you change the size of a string in Java?

Set size() method in Java with Example Set. size() method is used to get the size of the Set or the number of elements present in the Set. Parameters: This method does not takes any parameter. Return Value: The method returns the size or the number of elements present in the Set.

What is compression in Java?

Java object compression is done using the GZIPOutputStream class (this class implements a stream filter for writing compressed data in the GZIP file format) and passes it to the ObjectOutputStream class (this class extends OutputStream and implements ObjectOutput, ObjectStreamConstants) to write the object into an ...


1 Answers

Compression algorithms almost always have some form of space overhead, which means that they are only effective when compressing data which is sufficiently large that the overhead is smaller than the amount of saved space.

Compressing a string which is only 20 characters long is not too easy, and it is not always possible. If you have repetition, Huffman Coding or simple run-length encoding might be able to compress, but probably not by very much.

like image 102
JesperE Avatar answered Sep 28 '22 12:09

JesperE