当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.nio.Buffer用法及代码示例


Buffer 类为特定基元类型的数据块提供缓冲区或容器。有限的元素序列线性存储在缓冲区中。

缓冲区的重要属性可以方便地在数据中执行读写操作,包括:

  • Capacity: 此属性确定缓冲区中可以存在的最大元素数。
  • Limit: 该属性通过提供元素的索引来确定可以读取或写入的数据的限制。
  • Position: 该属性确定当前元素在缓冲区中的位置。

用法:类声明

public abstract class Buffer extends Object

Buffer 类为以下每个缓冲区数据类型提供了子类,例如 ByteBuffer、MappedByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer。 Buffer类从java.lang.Object类继承了以下方法,例如clone()、finalize()、getClass()、hashCode()、notify()、notifyAll()、toString()、wait()。现在,继续讨论 Buffer 类的方法,如下所示,按字母顺序以表格格式显示:

方法 说明
array() 此方法返回支持此缓冲区的数组
arrayOffset() 此方法返回缓冲区第一个元素在该缓冲区的后备数组中的偏移量
capacity() 该方法返回该缓冲区的容量。
clear() 该方法会清除该缓冲区。
flip() 该方法翻转该缓冲区。
hasArray() 此方法告知此缓冲区是否由可访问数组支持。
hasRemaining() 此方法告知当前位置和限制之间是否有任何元素。
isDirect() 这个方法告诉我们这个缓冲区是否是直接的。
isReadOnly() 这个方法告诉我们这个缓冲区是否是只读的。
limit() 此方法返回此缓冲区的限制。
limit(int newLimit) 此方法设置此缓冲区的限制。
mark() 此方法将此缓冲区的标记设置在其位置。
position() 该方法返回该缓冲区的位置。
position(int newPosition) 该方法设置该缓冲区的位置。
remaining() 此方法返回当前位置和限制之间的元素数量。
reset() 此方法将此缓冲区的位置重置为之前标记的位置。
rewind() 此方法倒回此缓冲区。

实现:Buffer类及其方法

示例 1

Java


// Java program to demonstrate Buffer Class
// Importing required libraries
import java.nio.*;
import java.util.*;
// Main class
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Declaring the capacity of the ByteBuffer
        int capacity = 5;
        // Try block to check for exceptions
        try {
            // Creating the ByteBuffer
            // Creating object of ByteBuffer class and
            // allocating size capacity
            ByteBuffer bufferObj
                = ByteBuffer.allocate(capacity);
            // Putting the int to byte typecast
            // value in ByteBuffer using put() method
            // Custom input entries
            bufferObj.put((byte)10);
            bufferObj.put((byte)20);
            bufferObj.put((byte)30);
            bufferObj.put((byte)40);
            bufferObj.put((byte)50);
            // Typecasting ByteBuffer into Buffer
            Buffer bufferObj1 = (Buffer)bufferObj;
            // Getting array that backs this buffer
            // using array() method
            byte[] arr = (byte[])bufferObj1.array();
            // Display message only
            System.out.print(" The array is : [");
            // Print the array
            for (int i = 0; i < arr.length; i++)
                System.out.print(" " + arr[i]);
            System.out.print(" ]");
        }
        // Catch block to handle the exception
        catch (ReadOnlyBufferException e) {
            // Print message where exception occurred
            // is displayed on console
            System.out.println("Exception throws: " + e);
        }
    }
}
输出
 The array is : [ 10 20 30 40 50 ]

示例 2

Java


// Java program to demonstrate Buffer class
// Importing required libraries
import java.nio.*;
import java.util.*;
// Main class
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // try block to check for exceptions
        try {
            // Creating and initializing byte array
            // with custom elements
            byte[] barr = { 10, 20, 30, 40, 50 };
            // Creating object of ByteBuffer class
            // and allocating size capacity
            ByteBuffer bufferObj = ByteBuffer.wrap(barr);
            // Typecasting ByteBuffer into Buffer
            Buffer bufferObj1 = (Buffer)bufferObj;
            // now trying to set the position at index 2
            bufferObj1.position(2);
            // Setting this buffer mark position
            // using mark() method
            bufferObj1.mark();
            // Again trying to set the position at index 4
            bufferObj1.position(5);
            // Display the position
            System.out.println("position before reset: "
                               + bufferObj1.position());
            // Now trying to call clear() to restore
            // to the position at index 0 by discarding the
            // mark
            bufferObj1.clear();
            // Print and display the position
            System.out.println("position after reset: "
                               + bufferObj1.position());
        }
        // Catch block to handle the exception
        catch (InvalidMarkException e) {
            // Display message to be showcase when exception
            // occurred
            System.out.println(
                "new position is less than "
                + "the position we marked before ");
            // Print the exception on the console
            // along with display message
            System.out.println("Exception throws: " + e);
        }
    }
}
输出
position before reset: 5
position after reset: 0


相关用法


注:本文由纯净天空筛选整理自surbhityagi15大神的英文原创作品 java.nio.Buffer Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。