|
||||||||||
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 ZipEncoding
name
- A filename or ZIP comment.
ZipEncoding.canEncode(java.lang.String)
public java.nio.ByteBuffer encode(java.lang.String name)
ZipEncoding
Examples 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 ZipEncoding
name
- 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 ZipEncoding
data
- The byte values to decode.
java.io.IOException
ZipEncoding.decode(byte[])
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |