|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.compress.archivers.zip.Simple8BitZipEncoding
class Simple8BitZipEncoding
This ZipEncoding implementation implements a simple 8bit character set, which mets the following restrictions:
These restrictions most notably apply to the most prominent
omissions of java-1.4's Charset
implementation, Cp437 and Cp850.
The methods of this class are reentrant.
| Nested Class Summary | |
|---|---|
private static class |
Simple8BitZipEncoding.Simple8BitChar
A character entity, which is put to the reverse mapping table of a simple encoding. |
| Field Summary | |
|---|---|
private char[] |
highChars
The characters for byte values of 128 to 255 stored as an array of 128 chars. |
private java.util.List |
reverseMapping
A list of Simple8BitZipEncoding.Simple8BitChar objects sorted by the unicode
field. |
| Constructor Summary | |
|---|---|
Simple8BitZipEncoding(char[] highChars)
|
|
| Method Summary | |
|---|---|
boolean |
canEncode(java.lang.String name)
Check, whether the given string may be losslessly encoded using this encoding. |
boolean |
canEncodeChar(char c)
|
java.lang.String |
decode(byte[] data)
|
char |
decodeByte(byte b)
Return the character code for a given encoded byte. |
java.nio.ByteBuffer |
encode(java.lang.String name)
Encode a filename or a comment to a byte array suitable for storing it to a serialized zip entry. |
private Simple8BitZipEncoding.Simple8BitChar |
encodeHighChar(char c)
|
boolean |
pushEncodedChar(java.nio.ByteBuffer bb,
char c)
Pushes the encoded form of the given character to the given byte buffer. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private final char[] highChars
private final java.util.List reverseMapping
Simple8BitZipEncoding.Simple8BitChar objects sorted by the unicode
field. This list is used to binary search reverse mapping of
unicode characters with a character code greater than 127.
| Constructor Detail |
|---|
public Simple8BitZipEncoding(char[] highChars)
highChars - The characters for byte values of 128 to 255
stored as an array of 128 chars.| Method Detail |
|---|
public char decodeByte(byte b)
b - The byte to decode.
public boolean canEncodeChar(char c)
c - The character to encode.
public boolean pushEncodedChar(java.nio.ByteBuffer bb,
char c)
bb - The byte buffer to write to.c - The character to encode.
false is returned, nothing is pushed to the
byte buffer.private Simple8BitZipEncoding.Simple8BitChar encodeHighChar(char c)
c - A unicode character in the range from 0x0080 to 0x7f00
null value is returned, if this character is not
covered by this encoding.public boolean canEncode(java.lang.String name)
ZipEncoding
canEncode in interface ZipEncodingname - A filename or ZIP comment.
ZipEncoding.canEncode(java.lang.String)public java.nio.ByteBuffer encode(java.lang.String name)
ZipEncodingExamples for CP 437 (in pseudo-notation, right hand side is C-style notation):
encode("?_for_Dollar.txt") = "%U20AC_for_Dollar.txt"
encode("?lf?sser.txt") = "\231lf\204sser.txt"
encode in interface ZipEncodingname - A filename or ZIP comment.
%Uxxxx. It is
assumed, that the byte buffer is positioned at the
beginning of the encoded result, the byte buffer has a
backing array and the limit of the byte buffer points
to the end of the encoded result.ZipEncoding.encode(java.lang.String)
public java.lang.String decode(byte[] data)
throws java.io.IOException
decode in interface ZipEncodingdata - The byte values to decode.
java.io.IOExceptionZipEncoding.decode(byte[])
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||