Package com.webcodepro.shrinkit.io
Class NufxLzw2InputStream
- java.lang.Object
-
- java.io.InputStream
-
- com.webcodepro.shrinkit.io.NufxLzw2InputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class NufxLzw2InputStream extends java.io.InputStream
TheNufxLzw2InputStream
reads a data fork or resource fork written in the NuFX LZW/2 format.The layout of the LZW/2 data is as follows:
"Fork" Header +0 Byte Low-level volume number used to format 5.25" disks +1 Byte RLE character used to decode this thread Each subsequent 4K chunk of data +0 Word Bits 0-12: Length after RLE compression
Bit 15: LZW flag (set to 1 if LZW used)+2 Word If LZW flag = 1, total bytes in chunk
Else (flag = 0) start of dataThe LZW/2 dictionary is only cleared when the table becomes full and is indicated in the input stream by 0x100. It is also cleared whenever a chunk that is not LZW encoded is encountered.
-
-
Constructor Summary
Constructors Constructor Description NufxLzw2InputStream(LittleEndianByteInputStream dataStream)
Create the LZW/2 input stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
getDataCrc()
int
getRleCharacter()
int
getVolumeNumber()
int
read()
Read the next byte in the decompressed data stream.void
setRleCharacter(int rleCharacter)
void
setVolumeNumber(int volumeNumber)
-
-
-
Constructor Detail
-
NufxLzw2InputStream
public NufxLzw2InputStream(LittleEndianByteInputStream dataStream)
Create the LZW/2 input stream.
-
-
Method Detail
-
read
public int read() throws java.io.IOException
Read the next byte in the decompressed data stream.- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
getVolumeNumber
public int getVolumeNumber()
-
setVolumeNumber
public void setVolumeNumber(int volumeNumber)
-
getRleCharacter
public int getRleCharacter()
-
setRleCharacter
public void setRleCharacter(int rleCharacter)
-
getDataCrc
public long getDataCrc()
-
-