Top Description Fields Constructors Methods
org.postgresql.util

public Class ReaderInputStream

extends InputStream
Class Inheritance
Imports
java.io.IOException, .InputStream, .Reader, java.nio.ByteBuffer, .CharBuffer, java.nio.charset.CharacterCodingException, .CharsetEncoder, .CoderResult, .StandardCharsets

ReaderInputStream accepts a UTF-16 char stream (Reader) as input and converts it to a UTF-8 byte stream (InputStream) as output.

This is the inverse of java.io.InputStreamReader which converts a binary stream to a character stream.

Field Summary

Modifier and TypeField and Description
private final ByteBuffer
private final CharBuffer
private static final int
private final CharsetEncoder
private boolean
endOfInput

true when all of the characters have been read from the reader into inbuf.

private final byte[]
private final Reader

Constructor Summary

AccessConstructor and Description
public
pack-priv
ReaderInputStream(Reader reader, int charBufferSize)

Allow ReaderInputStreamTest to use small buffers to force UTF-16 surrogate pairs to cross buffer boundaries in interesting ways.

Method Summary

Modifier and TypeMethod and Description
private void
private void
public void
close()

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Closes this input stream and releases any system resources associated with the stream.

public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

public int
read(byte[]
the buffer into which the data is read.
b
,
int
the start offset in array b at which the data is written.
off
,
int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.

Inherited from java.io.InputStream:
availablemarkmarkSupportednullInputStreamreadreadAllBytesreadNBytesreadNBytesresetskipskipNBytestransferTo

Field Detail

bbufback to summary
private final ByteBuffer bbuf
cbufback to summary
private final CharBuffer cbuf
DEFAULT_CHAR_BUFFER_SIZEback to summary
private static final int DEFAULT_CHAR_BUFFER_SIZE
encoderback to summary
private final CharsetEncoder encoder
endOfInputback to summary
private boolean endOfInput

true when all of the characters have been read from the reader into inbuf.

oneByteback to summary
private final byte[] oneByte
readerback to summary
private final Reader reader

Constructor Detail

ReaderInputStreamback to summary
public ReaderInputStream(Reader reader)
ReaderInputStreamback to summary
pack-priv ReaderInputStream(Reader reader, int charBufferSize)

Allow ReaderInputStreamTest to use small buffers to force UTF-16 surrogate pairs to cross buffer boundaries in interesting ways. Because this constructor is package-private, the unit test must be in the same package.

Method Detail

advanceback to summary
private void advance() throws IOException
checkEncodeResultback to summary
private void checkEncodeResult(CoderResult result) throws CharacterCodingException
closeback to summary
public void close() throws IOException

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Doc from java.io.InputStream.close.

Closes this input stream and releases any system resources associated with the stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value 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.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read(byte[] b, int off, int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
b:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Annotations
@Override
Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.