Class UUDecoderStream

All Implemented Interfaces:
Closeable, AutoCloseable

final class UUDecoderStream extends FilterInputStream
This class implements a UUDecoder. It is implemented as a FilterInputStream, so one can just wrap this class around any input stream and read bytes from this filter. The decoding is done as the bytes are read out.
  • Field Details

    • name

      private String name
    • mode

      private int mode
    • buffer

      private byte[] buffer
    • bufsize

      private int bufsize
    • index

      private int index
    • gotPrefix

      private boolean gotPrefix
    • gotEnd

      private boolean gotEnd
    • lin

      private LineInputStream lin
    • ignoreErrors

      private boolean ignoreErrors
    • ignoreMissingBeginEnd

      private boolean ignoreMissingBeginEnd
    • readAhead

      private String readAhead
  • Constructor Details

    • UUDecoderStream

      public UUDecoderStream(InputStream in)
      Create a UUdecoder that decodes the specified input stream. The System property mail.mime.uudecode.ignoreerrors controls whether errors in the encoded data cause an exception or are ignored. The default is false (errors cause exception). The System property mail.mime.uudecode.ignoremissingbeginend controls whether a missing begin or end line cause an exception or are ignored. The default is false (errors cause exception).
      Parameters:
      in - the input stream
    • UUDecoderStream

      public UUDecoderStream(InputStream in, boolean ignoreErrors, boolean ignoreMissingBeginEnd)
      Create a UUdecoder that decodes the specified input stream.
      Parameters:
      in - the input stream
      ignoreErrors - ignore errors?
      ignoreMissingBeginEnd - ignore missing begin or end?
  • Method Details

    • read

      public int read() throws IOException
      Read the next decoded byte from this input stream. The byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.
      Overrides:
      read in class FilterInputStream
      Returns:
      next byte of data, or -1 if the end of stream is reached.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • read

      public int read(byte[] buf, int off, int len) throws IOException
      Overrides:
      read in class FilterInputStream
      Throws:
      IOException
    • markSupported

      public boolean markSupported()
      Overrides:
      markSupported in class FilterInputStream
    • available

      public int available() throws IOException
      Overrides:
      available in class FilterInputStream
      Throws:
      IOException
    • getName

      public String getName() throws IOException
      Get the "name" field from the prefix. This is meant to be the pathname of the decoded file
      Returns:
      name of decoded file
      Throws:
      IOException - if an I/O error occurs.
    • getMode

      public int getMode() throws IOException
      Get the "mode" field from the prefix. This is the permission mode of the source file.
      Returns:
      permission mode of source file
      Throws:
      IOException - if an I/O error occurs.
    • readPrefix

      private void readPrefix() throws IOException
      UUencoded streams start off with the line: "begin <mode> <filename>" Search for this prefix and gobble it up.
      Throws:
      IOException
    • decode

      private boolean decode() throws IOException
      Throws:
      IOException