當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。