USAGE
The static methods on UnicodeDecompressor may be used in a straightforward manner to decompress simple strings:
byte [] compressed = ... ; // get compressed bytes from somewhere String result = UnicodeDecompressor.decompress(compressed);
The static methods have a fairly large memory footprint. For finer-grained control over memory usage, UnicodeDecompressor offers more powerful APIs allowing iterative decompression:
// Decompress an array "bytes" of length "len" using a buffer of 512 chars
// to the Writer "out"
UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
final static int BUFSIZE = 512;
char [] charBuffer = new char [ BUFSIZE ];
int charsWritten = 0;
int [] bytesRead = new int [1];
int totalBytesDecompressed = 0;
int totalCharsWritten = 0;
do {
// do the decompression
charsWritten = myDecompressor.decompress(bytes, totalBytesDecompressed,
len, bytesRead,
charBuffer, 0, BUFSIZE);
// do something with the current set of chars
out.write(charBuffer, 0, charsWritten);
// update the no. of bytes decompressed
totalBytesDecompressed += bytesRead[0];
// update the no. of chars written
totalCharsWritten += charsWritten;
} while(totalBytesDecompressed < len);
myDecompressor.reset(); // reuse decompressor
Decompression is performed according to the standard set forth in Unicode Technical Report #6
UnicodeCompressor
| Modifier and Type | Field and Description |
|---|---|
| private static final int | BUFSIZE
Size of our internal buffer |
| private byte[] | fBuffer
Internal buffer for saving state |
| private int | fBufferLength
Number of characters in our internal buffer |
| private int | fCurrentWindow
Alias to current dynamic window |
| private int | fMode
Current compression mode |
| private int[] | fOffsets
Dynamic compression window offsets |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public static String | Returns: A String containing the decompressed characters.The byte array to decompress. buffer)Decompress a byte array into a String. |
| public static char[] | Returns: A character array containing the decompressed bytes.The byte array to decompress. buffer, int The start of the byte run to decompress. start, int The limit of the byte run to decompress. limit)Decompress a byte array into a Unicode character array. |
| public int | Returns: The number of Unicode characters written to charBuffer.The byte buffer to decompress. byteBuffer, int The start of the byte run to decompress. byteBufferStart, int The limit of the byte run to decompress. byteBufferLimit, int[] A one-element array. If not null, on return
the number of bytes read from byteBuffer. bytesRead, char[] A buffer to receive the decompressed data.
This buffer must be at minimum two characters in size. charBuffer, int The starting offset to which to write
decompressed data. charBufferStart, int The limiting offset for writing
decompressed data. charBufferLimit)Decompress a byte array into a Unicode character array. |
| public void |
| BUFSIZE | back to summary |
|---|---|
| private static final int BUFSIZE Size of our internal buffer | |
| fBuffer | back to summary |
|---|---|
| private byte[] fBuffer Internal buffer for saving state | |
| fBufferLength | back to summary |
|---|---|
| private int fBufferLength Number of characters in our internal buffer | |
| fCurrentWindow | back to summary |
|---|---|
| private int fCurrentWindow Alias to current dynamic window | |
| fMode | back to summary |
|---|---|
| private int fMode Current compression mode | |
| fOffsets | back to summary |
|---|---|
| private int[] fOffsets Dynamic compression window offsets | |
| UnicodeDecompressor | back to summary |
|---|---|
| public UnicodeDecompressor() Create a UnicodeDecompressor. Sets all windows to their default values. | |
| decompress | back to summary |
|---|---|
| public static String decompress(byte[] buffer) Decompress a byte array into a String.
| |
| decompress | back to summary |
|---|---|
| public static char[] decompress(byte[] buffer, int start, int limit) Decompress a byte array into a Unicode character array.
| |
| decompress | back to summary |
|---|---|
| public int decompress(byte[] byteBuffer, int byteBufferStart, int byteBufferLimit, int[] bytesRead, char[] charBuffer, int charBufferStart, int charBufferLimit) Decompress a byte array into a Unicode character array. This function will either completely fill the output buffer, or consume the entire input.
| |
| reset | back to summary |
|---|---|
| public void reset() Reset the decompressor to its initial state.
| |