Buffer


Buffer java.nio

Java 1.4

This class is the abstract superclass of all buffer classes in the java.nio API. A buffer is a linear (finite) sequence of prmitive values. The java.nio package defines a Buffer subclass for each primitive type in Java except for boolean . Buffer itself defines the common, type-independent features of all buffers. Buffer and its subclasses are intended for use by a single thread at a time, and contain no synchronization code to make them thread-safe.

The purpose of a buffer is to store data, and buffer classes must define methods for reading data from a buffer and writing data into a buffer. Because each Buffer subclass stores data of a different primitive type, however, the get( ) and put( ) methods that read and write data must be defined by each of the individual subclasses. See ByteBuffer (the most important subclass) for documentation of these methods; all the other subclasses define similar methods which differ only in the datatype of the values being read or written.

Each buffer has four numbers associated with it:


capacity

A buffer's capacity is its maximum size ; it can hold this many values. The capacity is specified when a buffer is created, and may not be changed; it can be queried with the capacity( ) method.


limit

A buffer's limit is its current size, or the index of the first element that does not contain valid data. Data cannot be read from or written into a buffer beyond the limit. When data is being written into a buffer, the limit is usually the same as the capacity. When data is being read from a buffer, the limit may be less than the capacity, and indicates the amount of valid data contained in the buffer. Two limit( ) methods exist: one to query a buffer's limit, and one to set it.


position

A buffer's position is the index of the element in the buffer at which data is being read or written. It is used and updated by the relative get( ) and put( ) methods defined by ByteBuffer and the other Buffer subclasses. Two position( ) methods exist to query and set the current position of the buffer. A buffer's position is always greater than or equal to zero and always less than or equal to the buffer's limit. The remaining( ) method returns the number of elements between the position and the limit and hasRemaining( ) returns true if this number is greater than zero.


mark

A buffer's mark is a temporarily saved position. Call mark( ) to set the mark to the current position. Call reset( ) to restore the buffer's position to the marked position.

Buffer defines several methods that perform important operations on a buffer:


clear( )

This method does not actually clear the contents of the buffer, but it sets the position to zero, sets the limit to the capacity, and discards any saved mark. This prepares the buffer to have new data written into it.


flip( )

This method sets the limit to the position, sets the position to zero, and discards any saved mark. After data has been written into a buffer, this method " flips " the purpose of the buffer and prepares it for reading.


rewind( )

This method sets the position to zero and discards any saved mark. It does not alter the limit, and can be used to restart a read operation at the beginning of the buffer.

Buffer objects may be read-only, in which case any attempt to store data in the buffer results in a ReadonlyBufferException . The isReadOnly( ) method returns TRue if a buffer is read-only.

 public abstract class  Buffer  {  // No Constructor   // Public Instance Methods  public final int  capacity  ( );        public final Buffer  clear  ( );  omu      public final Buffer  flip  ( );        public final boolean  hasRemaining  ( );        public abstract boolean  isReadOnly  ( );        public final int  limit  ( );        public final Buffer  limit  (int  newLimit  );        public final Buffer  mark  ( );        public final int  position  ( );        public final Buffer  position  (int  newPosition  );        public final int  remaining  ( );        public final Buffer  reset  ( );        public final Buffer  rewind  ( );   } 

Subclasses

ByteBuffer , CharBuffer , DoubleBuffer , FloatBuffer , IntBuffer , LongBuffer , ShortBuffer



Java In A Nutshell
Java In A Nutshell, 5th Edition
ISBN: 0596007736
EAN: 2147483647
Year: 2004
Pages: 1220

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net