java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.jvnet.mimepull.UUDecoderStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
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 Summary
FieldsModifier and TypeFieldDescriptionprivate byte[]
private int
private boolean
private boolean
private boolean
private boolean
private int
private LineInputStream
private int
private String
private String
Fields inherited from class java.io.FilterInputStream
in
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a UUdecoder that decodes the specified input stream.UUDecoderStream
(InputStream in, boolean ignoreErrors, boolean ignoreMissingBeginEnd) Create a UUdecoder that decodes the specified input stream. -
Method Summary
Modifier and TypeMethodDescriptionint
private boolean
decode()
int
getMode()
Get the "mode" field from the prefix.getName()
Get the "name" field from the prefix.boolean
int
read()
Read the next decoded byte from this input stream.int
read
(byte[] buf, int off, int len) private void
UUencoded streams start off with the line: "begin <mode> <filename>
" Search for this prefix and gobble it up.Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
Field Details
-
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
-
ignoreErrors
private boolean ignoreErrors -
ignoreMissingBeginEnd
private boolean ignoreMissingBeginEnd -
readAhead
-
-
Constructor Details
-
UUDecoderStream
Create a UUdecoder that decodes the specified input stream. The System propertymail.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 propertymail.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
Create a UUdecoder that decodes the specified input stream.- Parameters:
in
- the input streamignoreErrors
- ignore errors?ignoreMissingBeginEnd
- ignore missing begin or end?
-
-
Method Details
-
read
Read the next decoded byte from this input stream. The byte is returned as anint
in the range0
to255
. 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 classFilterInputStream
- 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
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
markSupported
public boolean markSupported()- Overrides:
markSupported
in classFilterInputStream
-
available
- Overrides:
available
in classFilterInputStream
- Throws:
IOException
-
getName
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
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
UUencoded streams start off with the line: "begin <mode> <filename>
" Search for this prefix and gobble it up.- Throws:
IOException
-
decode
- Throws:
IOException
-