Package com.sun.mail.util

# Class QPEncoderStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
com.sun.mail.util.QPEncoderStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`

Direct Known Subclasses:
  `QEncoderStream`

public class QPEncoderStream extends FilterOutputStream
This class implements a Quoted Printable Encoder. It is implemented as a FilterOutputStream, so one can just wrap this class around any output stream and write bytes into this filter. The Encoding is done as the bytes are written out.

Author:
  John Mani

## Field Summary

### Fields inherited from class java.io.FilterOutputStream

`out`

## Constructor Summary

Constructors
Constructor
Description
`QPEncoderStream(OutputStream out)`
Create a QP encoder that encodes the specified input stream.
`QPEncoderStream(OutputStream out, int bytesPerLine)`
Create a QP encoder that encodes the specified input stream

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Forces any buffered output bytes to be encoded out to the stream and closes this output stream.
`void`
`flush()`
Flushes this output stream and forces any buffered output bytes to be encoded out to the stream.
`protected void`
`output(int c, boolean encode)`
`void`
`write(byte[] b)`
Encodes `b.length` bytes to this output stream.
`void`
`write(byte[] b, int off, int len)`
Encodes `len` bytes from the specified `byte` array starting at offset `off` to this output stream.
`void`
`write(int c)`
Encodes the specified `byte` to this output stream.

### Methods inherited from class java.io.OutputStream

`nullOutputStream`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### QPEncoderStream

public QPEncoderStream(OutputStream out, int bytesPerLine)
Create a QP encoder that encodes the specified input stream

Parameters:
  `out` - the output stream
  `bytesPerLine` - the number of bytes per line. The encoder inserts a CRLF sequence after this many number of bytes.

### QPEncoderStream

public QPEncoderStream(OutputStream out)
Create a QP encoder that encodes the specified input stream. Inserts the CRLF sequence after outputting 76 bytes.

Parameters:
  `out` - the output stream

## Method Details

### write

public void write(byte[] b, int off, int len) throws IOException
Encodes `len` bytes from the specified `byte` array starting at offset `off` to this output stream.

Overrides:
  `write` in class `FilterOutputStream`
Parameters:
  `b` - the data.
  `off` - the start offset in the data.
  `len` - the number of bytes to write.
Throws:
  `IOException` - if an I/O error occurs.

### write

public void write(byte[] b) throws IOException
Encodes `b.length` bytes to this output stream.

Overrides:
  `write` in class `FilterOutputStream`
Parameters:
  `b` - the data to be written.
Throws:
  `IOException` - if an I/O error occurs.

### write

public void write(int c) throws IOException
Encodes the specified `byte` to this output stream.

Overrides:
  `write` in class `FilterOutputStream`
Parameters:
  `c` - the `byte`.
Throws:
  `IOException` - if an I/O error occurs.

### flush

public void flush() throws IOException
Flushes this output stream and forces any buffered output bytes to be encoded out to the stream.

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `FilterOutputStream`
Throws:
  `IOException` - if an I/O error occurs.

### close

public void close() throws IOException
Forces any buffered output bytes to be encoded out to the stream and closes this output stream.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `FilterOutputStream`
Throws:
  `IOException` - for I/O errors

### output

protected void output(int c, boolean encode) throws IOException

Throws:
  `IOException`