public class SimpleNioBuf extends java.lang.Object implements Buf
ByteBuffer| Constructor and Description |
|---|
SimpleNioBuf(java.nio.ByteBuffer byteBuf,
boolean isBit64,
boolean isBigendian)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
java.io.InputStream |
createInputStream(long offset)
Returns an input stream consisting of all the bytes in this buf
starting from the given offset.
|
Buf |
fillNewBuf(long count,
java.io.InputStream in)
Creates a new Buf of a given length populated from a given input stream.
|
long |
getLength()
Returns the extent of this buf in bytes.
|
boolean |
isBigendian()
Determines the data encoding of this buf.
|
boolean |
isBit64()
Determines the 64bit-ness of this buf.
|
java.lang.String |
readAsciiString(Pointer ptr,
int nbyte)
Reads a fixed number of bytes interpreting them as ASCII characters
and returns the result as a string.
|
void |
readDataBytes(long offset,
int count,
byte[] array)
Reads a sequence of byte values from this buf into an array.
|
void |
readDataDoubles(long offset,
int count,
double[] array)
Reads a sequence of double values from this buf into an array.
|
void |
readDataFloats(long offset,
int count,
float[] array)
Reads a sequence of float values from this buf into an array.
|
void |
readDataInts(long offset,
int count,
int[] array)
Reads a sequence of int values from this buf into an array.
|
void |
readDataLongs(long offset,
int count,
long[] array)
Reads a sequence of long integer values from this buf into an array.
|
void |
readDataShorts(long offset,
int count,
short[] array)
Reads a sequence of short values from this buf into an array.
|
int |
readInt(Pointer ptr)
Reads a signed big-endian 4-byte integer from the pointer position.
|
long |
readOffset(Pointer ptr)
Reads a file offset or size from the pointer position.
|
int |
readUnsignedByte(Pointer ptr)
Reads a single byte from the pointer position,
returning a value in the range 0..255.
|
void |
setBit64(boolean isBit64)
Sets the 64bit-ness of this buf.
|
void |
setEncoding(boolean bigend)
Sets the encoding for reading numeric values as performed by the
readData* methods. |
public SimpleNioBuf(java.nio.ByteBuffer byteBuf,
boolean isBit64,
boolean isBigendian)
byteBuf - NIO byte buffer containing the byte dataisBit64 - 64bit-ness of this bufisBigendian - true for big-endian, false for little-endianpublic long getLength()
Bufpublic int readUnsignedByte(Pointer ptr)
BufreadUnsignedByte in interface Bufptr - pointerpublic int readInt(Pointer ptr)
Bufpublic long readOffset(Pointer ptr)
BufBuf.isBit64().
Pointer position is moved on appropriately.readOffset in interface Bufpublic java.lang.String readAsciiString(Pointer ptr, int nbyte)
Bufnbyte bytes have
been read, it is taken as the end of the string.
Pointer position is moved on appropriately.readAsciiString in interface Bufptr - pointernbyte - maximum number of bytes in stringpublic void setBit64(boolean isBit64)
BufreadOffset reads
4- or 8-byte values.
This method should be called before the readOffset
method is invoked.
public void setEncoding(boolean bigend)
BufreadData* methods.
As currently specified, there are only two possibiliies, Big-Endian and Little-Endian. Interface and implementation would need to be reworked somewhat to accommodate the (presumably, rarely seen in this day and age) D_FLOAT and G_FLOAT encodings supported by the CDF standard.
This method should be called before any of the readData*
methods are invoked.
setEncoding in interface Bufbigend - true for big-endian, false for little-endianpublic boolean isBigendian()
BufisBigendian in interface Bufpublic boolean isBit64()
BufreadOffset reads
4- or 8-byte values.public void readDataBytes(long offset,
int count,
byte[] array)
BufreadDataBytes in interface Bufoffset - position sequence start in this buffer in bytescount - number of byte values to readarray - array to receive values, starting at array element 0public void readDataShorts(long offset,
int count,
short[] array)
BufreadDataShorts in interface Bufoffset - position sequence start in this buffer in bytescount - number of short values to readarray - array to receive values, starting at array element 0public void readDataInts(long offset,
int count,
int[] array)
BufreadDataInts in interface Bufoffset - position sequence start in this buffer in bytescount - number of int values to readarray - array to receive values, starting at array element 0public void readDataLongs(long offset,
int count,
long[] array)
BufreadDataLongs in interface Bufoffset - position sequence start in this buffer in bytescount - number of long values to readarray - array to receive values, starting at array element 0public void readDataFloats(long offset,
int count,
float[] array)
BufreadDataFloats in interface Bufoffset - position sequence start in this buffer in bytescount - number of float values to readarray - array to receive values, starting at array element 0public void readDataDoubles(long offset,
int count,
double[] array)
BufreadDataDoubles in interface Bufoffset - position sequence start in this buffer in bytescount - number of double values to readarray - array to receive values, starting at array element 0public java.io.InputStream createInputStream(long offset)
BufcreateInputStream in interface Bufoffset - position of first byte in buf that will appear in
the returned streampublic Buf fillNewBuf(long count, java.io.InputStream in) throws java.io.IOException
BuffillNewBuf in interface Bufcount - size of new buffer in bytesin - input stream capable of supplying
(at least) count bytescount filled with bytes
from injava.io.IOException