Class NufxLzw2InputStream

java.lang.Object
java.io.InputStream
com.webcodepro.shrinkit.io.NufxLzw2InputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public class NufxLzw2InputStream extends InputStream
The NufxLzw2InputStream 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 data

The 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 Details

  • Method Details

    • read

      public int read() throws IOException
      Read the next byte in the decompressed data stream.
      Specified by:
      read in class InputStream
      Throws:
      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()